是否可以编写与“ findme”匹配但在行中包含“ black”或“ red”或“ yellow”字样时不匹配的正则表达式?
Possible regex: (?!black|red|yellow)findme
排除的字词:黄色,黑色,红色
测试行:
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)
答案 0 :(得分:1)
您可以使用以下正则表达式:
^(?!.*(?:black|red|yellow)).*(findme)
详细信息:
^
-匹配字符串的开头(?!)
-前瞻否定.*
-匹配任意字符(换行符除外)0次以上(?:)
-非捕获组black|red|yellow
-匹配“黑色”,“红色”或“黄色” findme
-匹配'findme'字符串标志:
g
-全局i
-不区分大小写m
-多行答案 1 :(得分:0)
针对不需要的字词,使用否定的前瞻性锚定以开始:
^(?i)(?!.*(black|red|yellow)).*findme
请参见live demo通过所有测试。
(?i)
的意思是“忽略大小写”
(?!...)
是对未来的否定(断言而不会消耗未找到表达式)