正则表达式“所有不包含此字符串的”

时间:2018-09-22 15:42:44

标签: regex regex-negation

我一点都不熟悉,也从未真正使用过regex。我使用的某些软件需要使用正则表达式才能使用“高级过滤器”,并且花了2个小时的大部分时间进行研究并尝试使其正常工作...我发现了其他帖子似乎很相似,但终生对我来说,我无法根据我的特定需求调整这些答案。

要求:返回不包含以下排列的所有结果

ListView
List View
Listview
List view
listview
list view
listView
list View

...但是需要匹配超过0个字符的任何其他字符。在肯定的情况下,我有以下方法可以工作(例如,它成功地匹配了上面的字符串。现在我只需要取反它即可。

[Ll]ist[\s]?[Vv]iew

直觉上,这似乎应该很容易...我尝试过的事情:

(?![Ll]ist[\s]?[Vv]iew)
(?!([Ll]ist[\s]?[Vv]iew))
(?:(?!([Ll]ist[\s]?[Vv]iew)))

1 个答案:

答案 0 :(得分:1)

这是一种似乎可行的模式:

^(?!.*\b[Ll]ist[ ]?[Vv]iew\b).*$

Demo

它使用否定前瞻来断言list + view的排列没有发生。您处在正确的轨道上,但是断言某些单词WORD不会在任何地方出现的一般模式是:

^(?!.*\bWORD\b)

.*允许WORD出现在任何地方。

请注意,如果您的正则表达式工具具有不区分大小写的模式,则该模式可以简化为:

^(?!.*\blist[ ]?view\b).*$