相关疑难解决方法(0)

参考 - 这个正则表达式意味着什么?

这是什么?

这是常见问答的集合.这也是社区Wiki,因此每个人都被邀请参与维护.

为什么是这样?

患的是给我泽码型的问题和答案不佳,没有解释.此参考旨在提供质量问答的链接.

范围是什么?

此引用适用于以下语言:,,,,,,.

这可能过于宽泛,但这些语言共享相同的语法.对于特定功能,它背后的语言标签,例如:

  • 什么是正则表达式平衡组?

regex

52
推荐指数
1
解决办法
11万
查看次数

正则表达式中的负回顾

(注意:不是为什么不能在断言后面的零宽度外观中使用重复量词的副本;请参阅文章结尾。)

我正在尝试编写一个grep -P与 B 匹配的(Perl)正则表达式,当它前面没有 A 时——不管是否有中间空格。

所以,我尝试了这种负面的回顾,并在 regex101.com 中进行了测试:

(?<!A)\s*B
Run Code Online (Sandbox Code Playgroud)

这导致“AB”不匹配,这很好,但“A B”确实导致匹配,这不是我想要的。

我不确定这是为什么。它与 \s* 匹配空字符串 "" 的事实有关,因此您可以说 A 和 B 之间存在 \s* 无穷大匹配。但是为什么这会影响 "AB" 但不是“AB”?

以下正则表达式是否是正确的解决方案,如果是,为什么它可以解决问题?

(?<![A\s])\s*B
Run Code Online (Sandbox Code Playgroud)

我之前发布过这个,它被错误地标记为重复的问题。我正在寻找的可变长度的东西是匹配的一部分,而不是负面回顾本身的一部分——所以这与其他问题完全不同。是的,我可以将 \s* 放在负回顾中,但我没有这样做(并且不支持这样做,正如另一个问题所解释的那样)。另外,我对我上面发布的替代正则表达式为什么有效特别感兴趣,因为我知道它有效,但我不确定为什么。另一个问题并没有帮助回答这个问题。

regex perl grep negative-lookbehind

5
推荐指数
1
解决办法
2628
查看次数

标签 统计

regex ×2

grep ×1

negative-lookbehind ×1

perl ×1