求助一个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+
,不太明白为啥要这么多反斜杠
回答:
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
以上是 求助一个java关于换行符\n的正则表达式替换问题? 的全部内容, 来源链接: utcz.com/p/945187.html