【问题标题】:Return first match with pattern返回第一个匹配模式
【发布时间】:2020-06-08 22:26:56
【问题描述】:

我有一个应该匹配doc03test1的正则表达式

测试字符串:doc10test2.prdoc10.com

正则表达式:(doc?\d{2,2})(test?\d{1,1})?

这对吗?

【问题讨论】:

  • 你试过你的正则表达式了吗?有什么问题?
  • 为什么? 在doc 和test 之后?这意味着它将匹配doc 或do,以及tes 或test。这就是你想要的吗?
  • 哦,不。那不是我想要的。我想匹配doc,后跟两个数字,然后匹配test,然后是一个数字。但是还有一个我不想匹配的doc。
  • 您使用什么语言?在大多数语言中,正则表达式只返回第一个匹配项,除非你做一些额外的事情。在PHP中你必须使用preg_match_all(),在Python中你必须使用re.findall(),在JavaScript中你必须使用g修饰符。
  • 我在 Grafana 仪表板中使用这个正则表达式。

标签: regex grafana


【解决方案1】:

根据您在评论中的描述,可以很简单地完成:

我要匹配 doc: doc

后跟两个数字:\d{2}

然后匹配测试:test

然后是一个数字:\d

但还有一个我不想匹配的文档:我在开头添加了 ^,在结尾添加了 $

^ 代表字符串的开始,它应该从 doc 开始 $ 代表字符串的结尾,当我们做最后一位时它应该结束

^doc\d{2}test\d$

https://regex101.com/r/nfB3nR/4

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多