Groovy中/ Java的劈在括号字符串“(”(Groovy/Java split string

2019-07-21 01:53发布

我想执行类似的分割如下:

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

输出:

[Hello , orld(1)]

我想执行这一分裂:

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

但是,我看到:

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

有没有一种办法可以逃脱这个括号? 任何帮助表示赞赏。

Answer 1:

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


Answer 2:

split方法采用正则表达式模式。

如果你想拆就“只是一个普通的字符串”您可以使用Pattern.quote首先引用字符串:

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


Answer 3:

使用Groovy原生的正则表达式的语法时,也可以使用一个逃生:

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


Answer 4:

你必须正确转义括号字符

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


Answer 5:

由于拆分只接受正则表达式,你必须传递给它作为一个转义字符。 对于这一点,你必须附加在它前面的一个反斜杠

\(

但上述有编译错误,因为它被解析为一个有效的转义字符如:

\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("("));


文章来源: Groovy/Java split string on parentheses “(”