Regex 正则表达式排除某些单词,但与其中一个匹配
是否可以编写一个与“findme”匹配的正则表达式,但如果该行包含“黑色”、“红色”或“黄色”单词,则该正则表达式不匹配 排除词:黄色、黑色、红色 测试线:Regex 正则表达式排除某些单词,但与其中一个匹配,regex,regex-negation,regex-lookarounds,Regex,Regex Negation,Regex Lookarounds,是否可以编写一个与“findme”匹配的正则表达式,但如果该行包含“黑色”、“红色”或“黄色”单词,则该正则表达式不匹配 排除词:黄色、黑色、红色 测试线: findme (OK) xyz (NOT!) XYZfindmeXYZ (OK) somethingelseFINDMEsome_thingelse (OK) BLACK_ findme (NOT !) BLACK findme (NOT !) XyBlacK findme xy
findme (OK)
xyz (NOT!)
XYZfindmeXYZ (OK)
somethingelseFINDMEsome_thingelse (OK)
BLACK_ findme (NOT !)
BLACK findme (NOT !)
XyBlacK findme xyz_xy (NOT !)
xy findme RED (NOT !)
yellow__ findme _xy (NOT !)
_xy_ findme _something (OK)
您可以使用以下正则表达式:
^(?。*(?:黑色|红色|黄色)).*(findme)
演示:
详细信息:
-匹配字符串的开头^
-消极前瞻(?!)
-匹配任何字符(除换行符外)0+次*
-非捕获组(?:)
-匹配“黑色”、“红色”或“黄色”黑色|红色|黄色
-匹配“findme”字符串findme
-全球g
-不区分大小写i
-多行m
^(?i)(?!.*(black|red|yellow)).*findme
看看你是否通过了所有的考试
(?i)
表示“忽略案例”(?!…)
是一种消极的前瞻(在不使用表达式的情况下断言未找到表达式)您不需要后面的前瞻。第一个前瞻涵盖了整个输入。在什么上下文中?您使用什么语言?您试图实现什么?
^(?i)(?!.*(black|red|yellow)).*findme