9

如何在 RE2 中为“不以 4 或 5 开头的匹配字符串”编写正则表达式?

在 PCRE 我会使用^(?!4)但 RE2不支持该语法

4

2 回答 2

8

您可以使用此正则表达式:

^[^45]

^匹配 start 并[^45]匹配除4or 5at start 之外的任何内容。

于 2015-01-28T16:24:06.243 回答
0

我也有这个问题,但我正在寻找字符串,而不是单个字符。

我这样做的方法是看两次。

首先,找到所有匹配的项目,然后过滤它们以获得最终答案

例子

  • 测试数据
    aaabaraaa
    aaafooaaa
    aaazooaaa
    aaaqooaaa
    
    假设我想找到中心文本(在“aaa”之间),它不应该是“bar”或“foo”

PCRE 1 => https://regex101.com/r/nJcbt1/1/很容易

使用re2我会选择分而治之:用组来缩小范围,然后过滤。

使用 Golang 编写的解决方案 =>去游乐场


[1] PCRE:Perl 兼容的正则表达式

于 2021-04-22T08:47:30.223 回答