Regex匹配除给定单词(可能包括连字符/破折号)之外的所有内容



我想匹配除了给定的单词以外的所有内容,所以给定这个列表:

wordOne
wordTwo/xy/z
word-three
word-four/lots/of/stuff

我可以使用这个正则表达式来匹配除了wordOne:

之外的所有内容。
(?!wordOne)b.+
  ==>
    wordTwo/xy/z
    word-three
    word-four/lots/of/stuff   

然而,如果我想匹配所有,除了一个包含连字符/破折号的单词,相同的regexp不起作用,因为连字符不是单词边界的一部分-它是[a- za - z0 -9_]

some-regexp(word-four)
  ==>
    wordOne
    wordTwo/xy/z
    word-three

some-regexp(word-four and word-three)
  ==>
    wordOne
    wordTwo/xy/z

正如我所看到的,您在示例中每行定义一个单词。在这种情况下,这个正则表达式应该为您工作:

^(?:(?!word-four|word-three).)*$

它跳过包含word-fourword-three的单词。

根据你的例子:

^(?:(?!wordOne).)*$
  ==>
    wordTwo/xy/z
    word-three
    word-four/lots/of/stuff 
^(?:(?!word-four).)*$
  ==>
    wordTwo/xy/z
    word-three
    word-four/lots/of/stuff 
^(?:(?!word-four|word-three).)*$
  ==>
    wordOne
    wordTwo/xy/z

最新更新