小编典典

Java String.replaceAll()引用最新找到的组

java

Javadoc说$ 1,$ 2等可以用来引用匹配组,但是使用时如何引用替换字符串中最新找到的组String.replaceAll()呢?

即有一个字符串"aaabbbaa"和一个正则表达式"a+",我希望能够做类似s.replaceAll("a+", "$\n")get的事情"aaa\nbbbaa\n",但是Java给了我Illegal group reference


阅读 366

收藏
2020-11-30

共1个答案

小编典典

s.replaceAll("(a+)", "$1\n") 应该管用:

jshell> String s = "aaabbbaa"
s ==> "aaabbbaa"

jshell> s.replaceAll("(a+)", "$1\n")
$2 ==> "aaa\nbbbaa\n"

正如注释中已经指出的那样,您必须在正则表达式中标记捕获组。这就是括号的(...)作用。然后,您必须使用来引用该捕获组$1,这是第一个捕获组。$0将是整个比赛(也在注释中指出),但$将无法正常工作。

2020-11-30