Regex 使用re2正则表达式和匹配大小写否定字符串模式

Regex 使用re2正则表达式和匹配大小写否定字符串模式,regex,prometheus,grafana,re2,Regex,Prometheus,Grafana,Re2,我使用re2正则表达式来匹配和否定 以下是每个可能的输入 abcd st-ed-qrew ktm ewe abcd st-ed-qrew abcd st wer qrew wabe ktm ewe abcd st qrew qrrt 条件是: 如果字符串以abcd-开头,那么它应该取反(不应该包含)-ed 如果字符串以ktm-开头,并且还包含-abcd-,那么它应该否定(不应该包含)-ed 正则表达式应该省略第一和第二个输入,因为它包含-ed。应通过第3和第4次输入 引用中的正则表达式链接传

我使用re2正则表达式来匹配和否定

以下是每个可能的输入

  • abcd st-ed-qrew
  • ktm ewe abcd st-ed-qrew
  • abcd st wer qrew wabe
  • ktm ewe abcd st qrew qrrt
  • 条件是:

    • 如果字符串以
      abcd-
      开头,那么它应该取反(不应该包含)
      -ed
    • 如果字符串以
      ktm-
      开头,并且还包含
      -abcd-
      ,那么它应该否定(不应该包含)
      -ed
    正则表达式应该省略第一和第二个输入,因为它包含
    -ed
    。应通过第3和第4次输入 引用中的正则表达式链接传递用于两个条件的匹配情况,但不用于否定(不包含)事物。希望需要一些调整来否定


    注:这是针对grafana中普罗米修斯数据的正则表达式。这就是为什么我也要给它们加标签。

    您可以使用以下模式:

    ^(?:ktm(?-e |-(?:[^e\W]| e[^d\W])\W*)*-?abcd(?:[^e\W]| e[^d\W])\W*)*$
    

    如果您想将其与您的

    \bkey=“((?:ktm(?-e |-(?:[^e\W]| e[^d\W])\W*)*-)?abcd(?:[^e\W]| e[^d\W])\W*)”
    


    重要部分的细分(即,
    (?:-e |-(?:[^e\W]| e[^d\W])\W*)
    在另一个问题中进行了解释。该部分同时用于
    abcd
    ktm
    。让我知道一些需要澄清的事情。

    为什么不工作请注意,我昨天无法帮您解决这个问题,因为您提到的预期输出没有意义,也不符合您提到的匹配条件。我根据您提供的条件发布了此问题的答案。希望您在此处使用的条件能更准确地表示您所需的内容。只是一个更新。这是有效的。但是,由于普罗米修斯查询中的实际实现是,我们需要添加转义字符
    (:ktm(?-e |-(?:[^e\\W]| e[^d\\W])\\W*-)?abcd(?-e |-(?:[^e]\W]|e[^d\\W])\\W*$
    。你能不能也把我的问题投上一票。因为,有人投了反对票,当我投上一票时,它显示为0。无论如何,非常感谢!