需要得到一个 PHP 正则表达式来匹配除指定语法之外的任何内容(负先行似乎不起作用?)

Need to get a PHP Regex that will match anything other than the syntax specified (negative look-ahead doesn't seem to be working?)

我想通过配置文件进行解析,以查找本地配置的用户,而不是使用用户名 'networks' 配置的用户。因此,例如,如果我的配置文件如下所示:

username networks
blah blah blah
username banana
blah  blah blah

我要取货username banana

我试过^username (?!networks)没有影响

我查看了 PHP assertions manual,我认为这条线为我指明了正确的方向...

例如,\w+(?=;) 匹配后跟分号的单词,但不包括匹配中的分号,而 foo(?!bar) 匹配任何出现的 "foo" 后面没有 "bar"

所以在我的例子中,我正在寻找任何出现的 username 后面没有跟 networks

看起来很简单但行不通?

这是我的 RegEx101 Attempt

试试下面的正则表达式:

^username ((?!networks)\w+)

Live Demo on Regex101

请注意,在您删除演示中的拼写错误(RegEx 后的换行符)后,它确实有效,但不会捕获用户名。如果要捕获整行,请将整个 RegEx 括起来,不包括 ^


工作原理:

^            # String starts with ...
username     # (username )
(            # Capture Username
  (?!networks)  # Do not capture if it is networks
  \w+           # Letter one one more times (the username)
)