【发布时间】:2015-03-27 15:34:40
【问题描述】:
如何在 RE2 中为“不以 4 或 5 开头的匹配字符串”编写正则表达式?
在 PCRE 中我会使用 ^(?!4) 但 RE2 doesn't support that syntax。
【问题讨论】:
-
你可以使用
^[^45],但它会消耗一个字符。
如何在 RE2 中为“不以 4 或 5 开头的匹配字符串”编写正则表达式?
在 PCRE 中我会使用 ^(?!4) 但 RE2 doesn't support that syntax。
【问题讨论】:
^[^45],但它会消耗一个字符。
我也遇到了这个问题,但我正在寻找字符串,而不是单个字符。
我的做法是多看两眼。
首先,找到所有匹配的项目,然后过滤得到最终答案
aaabaraaa
aaafooaaa
aaazooaaa
aaaqooaaa
假设我想找到中心文本(在“aaa”之间),它不应该是“bar”或“foo”PCRE 很容易1 => https://regex101.com/r/nJcbt1/1/
使用re2我会选择分而治之:用组来缩小范围,然后过滤。
[1] PCRE:Perl Compatible Regular Expressions
【讨论】:
你可以使用这个正则表达式:
^[^45]
^ 匹配 start 而[^45] 匹配除了 4 或 5 之外的任何东西。
【讨论】:
^(?:[^45]|$)。
-ed这个词怎么省略呢?对此link 有任何想法。这里 2 个匹配案例工作正常,但否定条件(不匹配案例)似乎不起作用。如果我错了,请纠正我。 @anubhava