Java Regex替换与特定文本匹配的行[重复]

Posted

技术标签:

【中文标题】Java Regex替换与特定文本匹配的行[重复]【英文标题】:Java Regex replace a line matching a specific text [duplicate] 【发布时间】: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

【问题讨论】:

【参考方案1】:

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

(?s)bar\n?

【讨论】:

非常感谢。您的解决方案最后给了我一个空行,但这不是问题,通过添加 trim s.replaceAll("(?s)bar\n?", "").trim() 解决了 删除所有 \nbar 而不是 bar\n 更有意义。在这种情况下,您不需要删除尾随 \n

以上是关于Java Regex替换与特定文本匹配的行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java模式与组匹配

正则表达式

正则表达式

正则表达式

Java中Regex替换的自定义函数[关闭]

Java Regex 用于将带引号的字符串与转义引号匹配