Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 为字符串匹配具有负查找的行_Regex - Fatal编程技术网

Regex 为字符串匹配具有负查找的行

Regex 为字符串匹配具有负查找的行,regex,Regex,我正在尝试使用负回溯来匹配不以“zzz_2;”开头的行。为什么我的东西不管用 (?<!(zzz_))\w+ (? 看啊头是你应该找的东西 ^(?!zzz_)\w+ ^将正则表达式锚定在字符串的开头 (?!zzz_)负向前瞻。检查开始后是否没有紧跟zzz_如果没有,则使用剩余的模式继续。否则将丢弃字符串 \w+匹配[a-zA-z0-9.] 问题与(? 让我们举一个例子说明它如何匹配zzz_asdf 现在正则表达式匹配从左到右从第一个字符开始 zzz_asdf | (?

我正在尝试使用负回溯来匹配不以“zzz_2;”开头的行。为什么我的东西不管用

(?<!(zzz_))\w+
(?

看啊头是你应该找的东西

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

  • (?!zzz_)
    负向前瞻。检查开始后是否没有紧跟
    zzz_
    如果没有,则使用剩余的模式继续。否则将丢弃字符串

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


问题与
(?

让我们举一个例子说明它如何匹配
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_asdf
|
(?

如果您仍然想尝试“向后看”,您可以编写以下内容

^....(?<!zzz_)\w+
^?

这不是一个好的“回头看”的例子!有什么理由你需要这样做而不是像这样做吗?@alfasin没关系,我只是想理解消极的回头看。@emodroket:因为你的建议根本不起作用;(.你觉得
[^(zzz))怎么样?)
match@JESUISCHARLIE Hm.理由很好。很有趣。谢谢。你能解释一下这是怎么回事吗?@thomas我添加了一个解释。希望它能帮助你:)@阿尔法辛:是的,这是一个前瞻性的问题。好吧,问题的标题要求的是一个前瞻性的解决方案,而不是前瞻性的。你在最后一行上发布的解决方案不会涵盖少于4个字符的行!