求助一个java关于换行符\n的正则表达式替换问题?

大家好,我想做一个关于换行符\n的正则表达式替换

输入文本是这样的
\nAAAAAA: \n\nBBBBBBB \n \n\nCCCCC\n\n\n

需求是把连续的\n(比如\n\n),还有中间可能有空格的场景(比如\n \n\n),全部换成单个的\n符号
上面的文本,期望的效果是
\nAAAAAA: \nBBBBBBB \nCCCCC\n
当然如果有办法把首末的\n一起去掉更好,但这个属于锦上添花,不是核心需求

我自己试了会儿,我想的匹配模式是 \n+\s*\n* ,结果不行。又在网上搜了些文章看,反而越看越昏了。 有个问题,比如上面的文本,复制到编辑器里面会自动加上一个转义的\反斜杠吧,那在写正则时是不是要加反斜杠。 比如一个简单的\n+,我在有的文章看是写的\\\\n+,不太明白为啥要这么多反斜杠

阅读 2.2k
2 个回答
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReplaceNewLine {
    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|$)|^\\s*\\n"替换成$1

推荐问题
宣传栏