匹配字符串的负向lookbehind行

时间:2015-01-22 17:54:54

标签: regex

我试图匹配不以" zzz _"开头的行。使用负面的lookbehind。为什么我没有工作?

(?<!(zzz_))\w+

https://regex101.com/r/kE7oC9/1

1 个答案:

答案 0 :(得分:2)

展望你应该寻找的东西

^(?!zzz_)\w+
  • ^将正则表达式锚定在字符串的开头

  • (?!zzz_)负面展望。检查zzz_后面是否没有开始,如果不是,则继续执行剩余模式。否则丢弃字符串

  • \w+匹配[a-zA-z0-9_]

Regex Demo

<小时/> 问题(?<!(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+

Regex Demo