当前位置: 首页 > 知识库问答 >
问题:

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

张德佑
2023-06-02

大家好,我想做一个关于换行符\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个答案

奚曦哲
2023-06-02

"\\n\\s*(\\n|$)|^\\s*\\n"替换成$1

薛彭薄
2023-06-02
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);
    }
}
 类似资料:
  • 问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪

  • 我有一根绳子: 我想将所有字符(#,)替换为(#),因此例外的输出是: 注意:我不知道字符串中有多少(#)或(#)序列 我尝试的是: 我试着写: 但结果是: 我的在线尝试 我尝试将(*)用于序列,但没有成功: 那么我如何才能得到我的例外输出?

  • 问题内容: 应该很简单,但是我为此而疯狂。 给定一个像这样的文本: 我需要删除行终止符的Java正则表达式,然后新行以空格开头,以便上面的示例文本变为: 问题答案: 这不会帮助吗?

  • 下面就来详细介绍Notepad++中关于正则表达式的部分,主要是查找和替换。 对于替换功能,一般的文本编辑器,都具有此功能,但是对于高级的正则表达式替换,则很多都不支持。而此处Notepad++支持此功能。 正则表达式的替换,在很长一段时间内,我都没有用到过。而后来有此需求的时候,由于不熟悉,导致也没去折腾具体如何使用的。 后来有空去弄了下,终于搞懂了。对此类功能不了解的人,会没啥感觉,但是看了下

  • 怎么在a函数里面 返回 list-1/2/ 。 注意: 不能写死 list , 因为 $reg 其实也是一个变量(正则表达式)。 后期可能改成 cate 就是返回 cate-1/2/ 改成 category 就是返回 category-1/2/

  • 我有一根绳子。假设:< br> 我想将所有替换为单词和替换为。一般来说,我想替换单个字母或单个字母与空格或点之间的所有点。我认为匹配的正则表达式是: 我怎么能只替换那个点,而不是所有匹配的东西? 编辑: 预期产出: 编辑2: 基本任务是从缩写和首字母缩略词中删除点,这些缩略词可以用点或不用点编写。所以一个好的正则表达式也很有价值