我想匹配除给定单词之外的所有内容,因此给出此列表:
wordOne
wordTwo/xy/z
word-three
word-four/lots/of/stuff
我可以使用此正则表达式来匹配除wordOne之外的所有内容:
(?!wordOne)\b.+
==>
wordTwo/xy/z
word-three
word-four/lots/of/stuff
但是,如果我想匹配除了包含连字符/破折号之外的所有内容,则相同的正则表达式不起作用,因为连字符不是单词边界的一部分 - 这是[ A-ZA-Z0-9 _]
E.g
some-regexp(word-four)
==>
wordOne
wordTwo/xy/z
word-three
和
some-regexp(word-four and word-three)
==>
wordOne
wordTwo/xy/z
答案 0 :(得分:11)
我可以看到你在示例中每行定义一个单词。在这种情况下,这个正则表达式应该适合你:
^(?:(?!word-four|word-three).)*$
它会跳过包含word-four
或word-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
在rubular上查看。