如果所述子字符串包含另一个单词,则正则表达式匹配子字符串
Posted
技术标签:
【中文标题】如果所述子字符串包含另一个单词,则正则表达式匹配子字符串【英文标题】:Regex Match substring if said substring contains another word 【发布时间】:2021-06-23 18:13:15 【问题描述】:示例字符串
Apple, Pinapple, NONE\nOrange, Pears, Apples\nMango, None, Banana\nLemon, NONEDLE, Grape
我试过的正则表达式
(?<=\\n)(.*?)(?=\\n)
- 这匹配每个子字符串,但我不知道如何只匹配其中包含 NONE 的子字符串
想要的结果
我试图构建一个正则表达式,它将匹配示例字符串中的每一行(一行在 \n 到另一行之间)。 但是,我希望它仅在该行包含单词 NONE 作为整个单词时才匹配。我曾尝试对 Regex Match text within a Capture Group 的结果进行逆向工程,但未能成功。
我正在编写一个 java 方法,该方法应该删除与正则表达式匹配的部分字符串。
任何帮助将不胜感激!!!
【问题讨论】:
检查this Java demo。 【参考方案1】:试试这个。
String input = "Apple, Pinapple, NONE\nOrange, Pears, Apples\nMango, None, Banana\nLemon, NONEDLE, Grape";
input.lines()
.filter(s -> s.matches(".*\\bNONE\\b.*"))
.forEach(System.out::println);
输出
Apple, Pinapple, NONE
【讨论】:
【参考方案2】:在 NONE 的任一侧使用单词边界:
"(?m)^.*\\bNONE\\b.*$"
启用多行标志后,^ 和 $ 匹配行的开头和结尾,并且由于 dot 不匹配换行符,这将匹配整行,其中 NONE 是它们。
将此正则表达式与匹配器一起使用;每次调用 find() 都会给你你想要的行。
【讨论】:
以上是关于如果所述子字符串包含另一个单词,则正则表达式匹配子字符串的主要内容,如果未能解决你的问题,请参考以下文章
用于检查字符串是不是不应包含某些单词的正则表达式,但如果这些单词前面有“to”或“for”,则这些单词是可以的