首先在Java中找到String

Max*_*lah 26 java regex java-ee java-6

是不是可以告诉String.split("(")函数它必须只拆分第一个找到的字符串"("?

例:

String test = "A*B(A+B)+A*(A+B)";
test.split("(") should result to ["A*B" ,"A+B)+A*(A+B)"]
test.split(")") should result to ["A*B(A+B" ,"+A*(A+B)"]
Run Code Online (Sandbox Code Playgroud)

rua*_*akh 47

是的,一点没错:

test.split("\\(", 2);
Run Code Online (Sandbox Code Playgroud)

正如文档String.split(String,int)解释:

limit参数控制应用模式的次数,因此会影响结果数组的长度.如果限制n大于零,那么模式将最多应用n - 1次,数组的长度将不大于n,并且数组的最后一个条目将包含超出最后匹配分隔符的所有输入.

  • @ChandraSekhar:这是因为`(`具有Java正则表达式特殊的意义(例如,`(34)+`表示"`34`的一次或多次出现",而不是`34 +`,这意味着"一个. `3`,其次是4`的`出现一次或多次.)所以反斜杠用于"报价"或"逃跑"了,并注明"实际的'('字符",而不是使用`(`它的特殊含义. (3认同)