如果字符串包含特定单词,则不匹配

时间:2021-05-17 11:37:20

标签: regex

我有字符串向量。我只想匹配那些包含“功能。”(带有可选点)。匹配的字符串不应包含“ONLY”和“PRACA”。

feature.Agencyjna_ONLY # needs to be removed
feature.UoP # needs to be matched
feature.UoD # needs to be matched
feature.PRACA # needs to be removed
featurePRACA # needs to be removed

我使用了以下两种结构,但它们都不起作用。

\bfeature\.?[^(ONLY|PRACA)]+\b
\bfeature\.?\w+(?!(ONLY|PRACA))\b

期望的输出:

feature.UoP 
feature.UoD

示例:regex101

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

lookahead 应该在字符串的开头,以确保它不会出现在整个字符串中,然后你可以用一个可选的点来匹配特征。

在模式中使用此 [^(ONLY|PRACA)] 表示否定字符类,也可以写成 [^()CAONLYPR|] 匹配除列出的字符之外的任何字符(因此 | 是管道字符,并不意味着或)

^(?!.*(?:ONLY|PRACA)).*\bfeature\.?\w+
  • ^ 字符串开头
  • (?! 否定前瞻,断言右边不是
    • .* 匹配除换行符以外的任何字符 0 次以上
    • (?:ONLY|PRACA) 匹配 ONLY 或 PRCA
  • ) 关闭否定前瞻
  • .*\bfeature\.? 匹配尽可能多的字符,然后匹配特征和可选的点
  • \w+ 匹配 1 个以上的字符

Regex demo

相关问题