在RE2语法中否定匹配?

时间:2015-01-28 16:23:15

标签: regex re2

如何在RE2中编写正则表达式,以匹配不以4或5&#34开头的字符串?

在PCRE中,我使用^(?!4)但使用RE2 doesn't support that syntax

2 个答案:

答案 0 :(得分:3)

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

^[^45]

^匹配“开始”,[^45]匹配45以外的任何内容。

答案 1 :(得分:0)

我也有这个问题,但我要查找的是字串,而不是单个字符。

我的做法是多看两眼。

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

示例

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

PCRE1 => https://regex101.com/r/nJcbt1/1/

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

使用 Golang 编写的解决方案 => Go Playground


[1] PCRE:Perl Compatible Regular Expressions