【问题标题】:RegEx - Match Numbers of Variable Length正则表达式 - 可变长度的匹配数
【发布时间】:2011-11-16 10:50:13
【问题描述】:

我正在尝试解析一个文档,该文档中到处都是参考编号。

文本文本文本 {4:2} 更多令人难以置信的文本 {4:3} 很久以后 {222:115} 还有更多文字。

引用总是用括号括起来,两者之间总是有一个冒号。我写了一个表达式来找到它们。

{[0-9]:[0-9]}

但是,当您遇到两位或三位数字时,这显然会失败,而且我无法弄清楚应该是什么。不会有超过 3 位数字 {999:999} 是要处理的最大大小。

有人知道处理这个问题的正确表达方式吗?

【问题讨论】:

    标签: regex


    【解决方案1】:
    {[0-9]+:[0-9]+}
    

    尝试添加加号

    【讨论】:

      【解决方案2】:

      您使用的是什么正则表达式引擎?他们中的大多数将支持以下表达式:

      \{\d+:\d+\}
      

      \d 实际上是[0-9] 的简写,但重要的部分是添加了+,意思是“一个或多个”。

      【讨论】:

        【解决方案3】:

        试试这个:

        {[0-9]{1,3}:[0-9]{1,3}}
        

        {1,3} 表示“匹配前面的 1 到 3 个字符”。

        【讨论】:

          【解决方案4】:

          您可以使用{min,max} 指定您希望上一个项目匹配多少次。

          {[0-9]{1,3}:[0-9]{1,3}}
          

          此外,对于大多数正则表达式,您可以使用 \d 代替 [0-9] 来表示数字:

          {\d{1,3}:\d{1,3}}
          

          您可能还需要考虑转义外部 {},以明确它们不是重复定义的一部分。

          【讨论】:

          猜你喜欢
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 2011-06-17
          • 1970-01-01
          • 2017-12-28
          • 2019-09-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多