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

时间:2017-11-17 13:34:20

标签: java regex replaceall

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

即。有一个字符串"aaabbbaa"和一个正则表达式"a+",我希望能够像s.replaceAll("a+", "$\n")那样获取"aaa\nbbbaa\n",但Java会给我Illegal group reference

1 个答案:

答案 0 :(得分:2)

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

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

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

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