我想执行类似的分割如下:
println "Hello World(1)".split("W");
输出:
[Hello , orld(1)]
我想执行这一分裂:
println "Hello World(1)".split("(");
但是,我看到:
Caught: java.util.regex.PatternSyntaxException: Unclosed group near index 1 (
有没有一种办法可以逃脱这个括号? 任何帮助表示赞赏。
println "Hello World(1)".split("\\(");
的split
方法采用正则表达式模式。
如果你想拆就“只是一个普通的字符串”您可以使用Pattern.quote
首先引用字符串:
println "Hello World(1)".split(Pattern.quote("("))
使用Groovy原生的正则表达式的语法时,也可以使用一个逃生:
assert "Hello World(1)".split(/\(/) == ["Hello World", "1)"]
你必须正确转义括号字符
println "Hello World(1)".split("\\(")
由于拆分只接受正则表达式,你必须传递给它作为一个转义字符。 对于这一点,你必须附加在它前面的一个反斜杠
\(
但上述有编译错误,因为它被解析为一个有效的转义字符如:
\t Tab
\n New Line or Line Feed
\r Carriage Return
所以,你必须用2个反斜线通过非含义的字符(如括号):
\\(
最后:
println "Hello World(1)".split("\\(");
或者您也可以通过类模式命名报价的java的内建功能做所有的事情:
println "Hello World(1)".split(Pattern.quote("("));