我试图匹配不以" zzz _"开头的行。使用负面的lookbehind。为什么我没有工作?
(?<!(zzz_))\w+
答案 0 :(得分:2)
展望你应该寻找的东西
^(?!zzz_)\w+
^
将正则表达式锚定在字符串的开头
(?!zzz_)
负面展望。检查zzz_
后面是否没有开始,如果不是,则继续执行剩余模式。否则丢弃字符串
\w+
匹配[a-zA-z0-9_]
(?<!(zzz_))\w+
让我们举例说明它如何匹配zzz_asdf
现在正则表达式匹配从第一个字符开始从左到右完成
zzz_asdf
|
(?<!zzz_asdf) At the begining the look behind is true since the string starting is not presceded by zzz_ Hence it proceeds with the rest of the pattern
zzz_asdf
|
\w
zzz_asdf
|
\w and so on till the end
如果你还想尝试一下,你可以写一些像
这样的东西^....(?<!zzz_)\w+