Java String.replaceAll()引用最新找到的组
Javadoc说$ 1,$ 2等可以用来引用匹配组,但是在使用String.replaceAll()
时如何引用替换字符串中最新找到的组?
即,有一个字符串"aaabbbaa"
和正则表达式"a+"
,我希望能够执行类似s.replaceAll("a+", "$\n")
来获取"aaa\nbbbaa\n"
,但Java给了我Illegal group reference
。
s.replaceAll("(a+)", "$1\n")
应该有效:
jshell> String s = "aaabbbaa" s ==> "aaabbbaa" jshell> s.replaceAll("(a+)", "$1\n") $2 ==> "aaa\nbbbaa\n"
正如评论中已经指出的那样,您必须在正则表达式中标记捕获组。 这就是括号(...)
作用。 然后,您将必须使用$1
引用该捕获组,这是第一个捕获组。 $0
将是整场比赛(也在评论中指出),但只是$
不起作用。