gpt4 book ai didi

regex - 如何使用 re2 正则表达式否定字符串模式?

转载 作者:行者123 更新时间:2023-12-04 02:33:06 51 4
gpt4 key购买 nike

我正在使用谷歌 re2用于查询 Prometheus 的正则表达式在 Grafana 仪表板上。尝试通过以下 3 种可能的输入字符串从键中获取值

 1. object{one="ab-vwxc",two="value1",key="abcd-eest-ed-xyz-bnn",four="obsoleteValues"}
2. object{one="ab-vwxc",two="value1",key="abcd-eest-xyz-bnn",four="obsoleteValues"}
3. object{one="ab-vwxc",two="value1",key="abcd-eest-xyz-bnn-ed",four="obsoleteValues"}

..验证如下所示

  • 应该包含abcd-
  • 不应包含 -ed

不知何故this regex

\bkey="(abcd(?:-\w+)*[^-][^e][^d]\w)"

..满足第一个条件abcd-但不能满足第二个条件(否定-ed)。

第二个输入选项的预期输出将是 abcd-eest-xyz-bnn。任何帮助将非常感激。非常感谢。

最佳答案

如果我正确理解您的要求,则以下模式应该有效:

\bkey="(abcd(?:-e|-(?:[^e\W]|e[^d\W])\w*)*)"

Demo .

重要部分分解:

(?:                 # Start a non-capturing group.
-e # Match '-e' literally.
| # Or the following...
- # Match '-' literally.
(?: # Start a second non-capturing group.
[^e\W] # Match any word character except 'e'.
| # Or...
e[^d\W] # Match 'e' followed by any word character except 'd'.
) # Close non-capturing group.
\w* # Match zero or more additional word characters.
) # Close non-capturing group.

或者简单来说:

Match a hyphen followed by:

  • only the letter 'e'. Or..
  • a word* not starting with 'e'. Or..
  • a word starting with 'e' not followed by 'd'.

*此处的“单词”表示正则表达式中定义的一串单词字符。

关于regex - 如何使用 re2 正则表达式否定字符串模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63061762/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com