
Java正则表达式高效去除文本中多余换行符和空格
在Java开发中,处理文本时经常需要清理多余的换行符和空格。本文提供一种利用正则表达式的解决方案,有效地将连续的换行符(可能包含空格)替换为单个换行符。
问题:给定一段文本,例如:\naaaaaa: \n\nbbbbbbb \n \n\nccccc\n\n\n,需要将其中的连续换行符(如\n\n)和包含空格的连续换行符(如\n \n\n)替换为单个换行符\n,得到结果:\naaaaaa: \nbbbbbbb \nccccc\n。(去除首尾换行符并非本文核心目标)
之前的尝试:\n+\s*\n* 未能达到预期效果。
立即学习“Java免费学习笔记(深入)”;
解决方案:
以下Java代码使用正则表达式\n\s*\n+ 有效地解决了这个问题:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CleanText {
public static void main(String[] args) {
String input = "\nAAAAAA: \n\nBBBBBBB \n \n\nCCCCC\n\n\n";
Pattern pattern = Pattern.compile("\\n\\s*\\n+"); // 注意此处正则表达式的修改
Matcher matcher = pattern.matcher(input);
String output = matcher.replaceAll("\n");
System.out.println(output);
}
}
代码解释:
-
\\n\\s*\\n+:这是改进后的正则表达式。-
\\n:匹配一个换行符。 -
\\s*:匹配零个或多个空格字符。 -
\\n+:匹配一个或多个换行符。
-
-
matcher.replaceAll("\n"):将所有匹配到的连续换行符(可能包含空格)替换为单个换行符。
Java字符串中需要使用双反斜杠\\来转义单个反斜杠\,因为反斜杠在Java字符串和正则表达式中都有特殊含义。 该正则表达式能有效处理连续换行符,但首尾换行符的处理需要额外步骤。










