J'essaie d'effectuer une scission semblable à celle-ci:
println "Hello World(1)".split("W");
Sortie:
[Hello , orld(1)]
Je veux effectuer cette scission:
println "Hello World(1)".split("(");
Mais je vois:
Caught: Java.util.regex.PatternSyntaxException: Unclosed group near index 1 (
Y at-il un moyen que je puisse échapper à ces parenthèses? Toute aide est appréciée.
println "Hello World(1)".split("\\(");
La méthode split
utilise un modèle d'expression régulière.
Si vous voulez scinder "juste une chaîne normale", vous pouvez utiliser Pattern.quote
pour la citer en premier
println "Hello World(1)".split(Pattern.quote("("))
Vous pouvez également utiliser un seul échap lorsque vous utilisez la syntaxe groovy native regex:
assert "Hello World(1)".split(/\(/) == ["Hello World", "1)"]
vous devez échapper correctement le caractère crochet
println "Hello World(1)".split("\\(")
Depuis que split accepte seulement les expressions rationnelles, vous devez le passer comme caractère échappé. Pour cela, vous devez ajouter une barre oblique inverse devant celui-ci.
\(
Mais above est une erreur de compilation car il est analysé comme un caractère d'échappement valide tel que:
\t Tab
\n New Line or Line Feed
\r Carriage Return
Donc, vous devez passer un caractère sans signification (par exemple, une parenthèse) avec 2 barres obliques inverses:
\\(
Finalement:
println "Hello World(1)".split("\\(");
OU vous pouvez aussi tout faire en fonction de la fonction intégrée de la classe Pattern named quote :
println "Hello World(1)".split(Pattern.quote("("));