Regex 在RE2语法中否定匹配?

Regex 在RE2语法中否定匹配?,regex,re2,Regex,Re2,如何在RE2中为“不以4或5开头的匹配字符串”编写正则表达式 在PCRE中,我会使用^(?!4)但是RE2。您可以使用以下正则表达式: ^[^45] ^匹配开始和[^45]匹配开始时的4或5之外的任何内容。我也有这个问题,但我正在查找字符串,而不是单个字符 我这样做的方式是看两遍 首先,找到所有匹配的项目,然后过滤它们以获得最终答案 例子 测试数据 aaabaraaa aaafooaaa aaazooaaa aaaqooaaa 假设我想找到中间文本(在“aaa”之间),它不应该是“bar”

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


在PCRE中,我会使用
^(?!4)
但是RE2。

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

^[^45]

^
匹配开始和
[^45]
匹配开始时的
4
5
之外的任何内容。

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

我这样做的方式是看两遍

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

例子
  • 测试数据
    aaabaraaa
    aaafooaaa
    aaazooaaa
    aaaqooaaa
    
    假设我想找到中间文本(在“aaa”之间),它不应该是“bar”或“foo”
使用PCRE1很容易=>

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

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



[1] PCRE:

您可以使用
^[^45]
,但它会消耗一个字符。如果您还想匹配空字符串,请使用
^(?:[^45]|$)
。是的,谢谢您添加了这个重要的附录@Timpietzcker类似于此,当其中包含
-ed
时如何省略这个单词?有什么想法吗。这里有两个匹配案例可以正常工作,但否定条件(不匹配案例)似乎不起作用。如果我错了,请纠正我@阿努巴瓦