Java 8正则表达式优化:将连续2或9个换行符减少1个
解决方案
可以用Java正则表达式的零宽断言(反向预查+正向预查)精准匹配恰好2个或9个连续换行符,再通过链式替换完成需求,一行代码即可实现:
String result = input.replaceAll("(?<!\\n)\\n{2}(?!\\n)", "\n") .replaceAll("(?<!\\n)\\n{9}(?!\\n)", "\n\n\n\n\n\n\n\n");
代码解释
(?<!\n):反向预查,确保匹配位置的前一个字符不是换行符,避免误匹配多连续换行的中间段\n{2}:匹配连续2个换行符(?!\n):正向预查,确保匹配位置的后一个字符不是换行符,保证是恰好2个连续换行- 第二个
replaceAll逻辑一致,匹配恰好9个连续换行符,替换为8个换行符
示例验证
输入字符串:
1234 4321foo1234 4321
处理后输出:
1234 4321foo1234 4321
内容的提问来源于stack exchange,提问作者ShaneK
相关产品推荐
相关产品推荐

