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

Pau*_*aul 6 regex

我想匹配除给定单词之外的所有内容,因此给出以下列表:

wordOne
wordTwo/xy/z
word-three
word-four/lots/of/stuff
Run Code Online (Sandbox Code Playgroud)

我可以使用这个正则表达式匹配除wordOne之外的所有内容:

(?!wordOne)\b.+
  ==>
    wordTwo/xy/z
    word-three
    word-four/lots/of/stuff   
Run Code Online (Sandbox Code Playgroud)

但是,如果我想匹配除了包含连字符/破折号的单词之外的所有内容,则相同的正则表达式不起作用,因为连字符不是单词边界的一部分 - 这是[a-zA-Z0-9_]

例如

some-regexp(word-four)
  ==>
    wordOne
    wordTwo/xy/z
    word-three
Run Code Online (Sandbox Code Playgroud)

some-regexp(word-four and word-three)
  ==>
    wordOne
    wordTwo/xy/z
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 11

我可以看到你在示例中每行定义一个单词.在这种情况下,这个正则表达式应该适合你:

^(?:(?!word-four|word-three).)*$
Run Code Online (Sandbox Code Playgroud)

它会跳过包含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
Run Code Online (Sandbox Code Playgroud)

rubular上看到它.