PCRE正则表达式为Re2正则表达式,没有负向视图

我正尝试使用正则表达式来过滤来自我办公室G Suite帐户电子邮件路由中某些地址的电子邮件。 为了做到这一点,我创建了以下正则表达式来执行以下操作:

  • 接受来自域“domain.com”的所有电子邮件地址
  • 拒绝来自该域的所有这些地址中的2个。
  • 为了做到这一点,我创建了以下正则表达式来完成上述功能:

    ^(?!test|tes2)[A-Z0-9._%+-]+@domain.com$
    

    这一个将拒绝test@domain.com和tes2@domain.com并接受来自该域名的所有其他组合。

    但是,G套件不接受PCRE正则表达式,所以我目前无法实现这一点。

    暂时,我创建了以下Re2正则表达式来接受来自所述域的所有电子邮件地址:

    (W|^)[w.+-]{0,25}@(domain).com(W|$)
    

    如何扩展这个以允许在re2 regex中不允许使用lookarounds的功能?


    由于这种负面预测是固定大小的,所以像这样扩展它相对简单。 虽然它确实在复杂性上爆炸了; 为了提高可读性,我添加了评论和间隔。

    ^
    ( # not /^t/
           [A-SU-Z0-9._%+-][A-Z0-9._%+-]*
    | # /^t/ but not /^te/
      t   ([A-DF-Z0-9._%+-][A-Z0-9._%+-]*)?
    | # /^te/ but not /^tes/
      te  ([A-RT-Z0-9._%+-][A-Z0-9._%+-]*)?
    | # /^tes/ but not /^tes[t2]/
      tes ([A-SU-Z013-9._%+-][A-Z0-9._%+-]*)?
    ) @domain.com $
    
    链接地址: http://www.djcxy.com/p/92645.html

    上一篇: PCRE regex to Re2 Regex without negative lookahead

    下一篇: How to match all email addresses at a specific domain using regex?