如何替换Java中的所有组出现?

时间:2018-02-14 22:21:54

标签: java regex

我想将所有\n \n替换为\n\n<new line><space><new line> to <new line><new line>)。

我使用此代码:

assertThat(
    "\n\n \n \n".replaceAll("(\n \n)+", "\n\n"),
    is("\n\n\n\n")
);

但我得\n\n\n\n而不是\n\n\n \n

如何修复正则表达式以获得正确的结果?

1 个答案:

答案 0 :(得分:7)

由于您尝试匹配重叠匹配的字符串,因此您需要使用lookahead assertion

(\n (?=\n))+

RegEx Demo

(?=\n)是零宽度断言,它不匹配仅在当前位置之前断言\n的存在。