【问题标题】:Java Regex replace a line matching a specific text [duplicate]Java Regex替换与特定文本匹配的行[重复]
【发布时间】:2020-02-24 22:12:29
【问题描述】:

我有这样的字符串:

String s = "foo\nbar\nfoo\nbar\nfoo\nbar";

如果打印到控制台看起来像这样:

foo
bar
foo
bar
foo
bar

我想删除等于“bar”的每一行。我试过了

System.out.println(s.replaceAll("(?s)bar", ""));

foo

foo

foo

System.out.println(s.replaceAll("(?s)bar\n", ""));

foo
foo
foo
bar

我应该在我的正则表达式中附加什么来获取

foo
foo
foo

【问题讨论】:

    标签: java regex


    【解决方案1】:

    \n 之后使用量词?。这意味着没有或一次。

    (?s)bar\n?
    

    【讨论】:

    • 非常感谢。您的解决方案最后给了我一个空行,但这不是问题,通过添加 trim s.replaceAll("(?s)bar\n?", "").trim() 解决了
    • 删除所有 \nbar 而不是 bar\n 更有意义。在这种情况下,您不需要删除尾随 \n
    猜你喜欢
    • 2012-09-22
    • 2014-12-07
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多