标签: java regex
我想将所有\n \n替换为\n\n(<new line><space><new line> to <new line><new line>)。
\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。
\n\n\n\n
\n\n\n \n
如何修复正则表达式以获得正确的结果?
答案 0 :(得分:7)
由于您尝试匹配重叠匹配的字符串,因此您需要使用lookahead assertion:
(\n (?=\n))+
RegEx Demo
(?=\n)是零宽度断言,它不匹配仅在当前位置之前断言\n的存在。
(?=\n)
\n