我有字符串向量。我只想匹配那些包含“功能。”(带有可选点)。匹配的字符串不应包含“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
非常感谢您的帮助!
答案 0 :(得分:2)
lookahead 应该在字符串的开头,以确保它不会出现在整个字符串中,然后你可以用一个可选的点来匹配特征。
在模式中使用此 [^(ONLY|PRACA)]
表示否定字符类,也可以写成 [^()CAONLYPR|]
匹配除列出的字符之外的任何字符(因此 |
是管道字符,并不意味着或)
^(?!.*(?:ONLY|PRACA)).*\bfeature\.?\w+
^
字符串开头(?!
否定前瞻,断言右边不是
.*
匹配除换行符以外的任何字符 0 次以上(?:ONLY|PRACA)
匹配 ONLY 或 PRCA)
关闭否定前瞻.*\bfeature\.?
匹配尽可能多的字符,然后匹配特征和可选的点\w+
匹配 1 个以上的字符