Подтвердить что ты не робот

Groovy/Разделенная строка Java в круглых скобках "("

Я пытаюсь выполнить разбиение, подобное следующему:

println "Hello World(1)".split("W");

Вывод:

[Hello , orld(1)]

Я хочу выполнить этот раскол:

println "Hello World(1)".split("(");

Но я вижу:

Caught: java.util.regex.PatternSyntaxException: Unclosed group near index 1 (

Есть ли способ избежать этих круглых скобок? Любая помощь приветствуется.

4b9b3361

Ответ 1

println "Hello World(1)".split("\\(");

Ответ 2

Метод split принимает шаблон регулярного выражения.

Если вы хотите разделить "только обычную строку", вы можете использовать Pattern.quote, чтобы сначала процитировать строку:

println "Hello World(1)".split(Pattern.quote("("))

Ответ 3

Вы также можете использовать одиночный escape при использовании синтаксиса regex groovy:

assert "Hello World(1)".split(/\(/) == ["Hello World", "1)"]

Ответ 4

вам нужно избежать символа скобки

println "Hello World(1)".split("\\(")

Ответ 5

Так как split просто принимает регулярное выражение, вам нужно передать его как экранированный символ. Для этого вы должны добавить перед ним обратную косую черту

\(

Но выше имеет ошибку компиляции, потому что она анализируется как допустимый экранированный символ, такой как:

\t Tab
\n New Line or Line Feed
\r Carriage Return

Итак, вы должны передать символ без смысла (например, скобки) с двумя обратными косыми чертами:

\\(

Наконец:

println "Hello World(1)".split("\\(");

ИЛИ вы также можете делать все, используя функцию java builtin класса Pattern с именем quot:

println "Hello World(1)".split(Pattern.quote("("));