为了账号安全,请及时绑定邮箱和手机立即绑定

匹配除指定字符串外的所有内容

/ 猿问

匹配除指定字符串外的所有内容

交互式爱情 2019-12-17 09:42:09

我知道以下正则表达式将匹配“红色”,“绿色”或“蓝色”。


red|green|blue

是否有一种简单的方法可以使它匹配除几个指定字符串以外的所有内容?


查看完整描述

3 回答

?
RISEBY

如果要确保该字符串既不是红色,绿色也不是蓝色,那么caskey的答案就是这样。但是,通常需要确保该行的任何位置都不包含红色,绿色或蓝色。为此,将正则表达式与锚定^并包含.*在否定的lookahead中:


^(?!.*(red|green|blue))

另外,假设您想要包含单词“ engine”但没有任何这些颜色的行:


^(?!.*(red|green|blue)).*engine

您可能会认为可以.*将正则表达式的开头作为因素:


^.*(?!red|green|blue)engine     # Does not work

但是你不能。您必须同时具有两个实例.*才能正常工作。


查看完整回答
反对 回复 2019-12-17
?
侃侃尔雅

取决于语言,但是通常可以这样输入否定断言:


(?!red|green|blue)

(感谢语法修复,以上是有效的Java和Perl,YMMV)


查看完整回答
反对 回复 2019-12-17
?
慕村9548890

匹配除给定字符串外的任何内容

如果要匹配整个字符串,但要匹配除某些字符串以外的所有字符串,可以这样进行:


^(?!(red|green|blue)$).*$


也就是说,从无法开始的字符串开头开始匹配,并以红色,绿色或蓝色结束,然后将其他任何内容匹配到字符串结尾。


您可以在这里尝试:https : //regex101.com/r/rMbYHz/2


请注意,这仅适用于支持否定超前的正则表达式引擎。


查看完整回答
反对 回复 2019-12-17

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信