【问题标题】:Range of matches in regex [duplicate]正则表达式中的匹配范围[重复]
【发布时间】:2012-08-09 08:28:34
【问题描述】:

我知道在正则表达式中,可以通过花括号指定所需的匹配数为 {最小,最大}

我正在阅读这篇文章:http://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx

并且无法理解 {1,} 或 {0,} 等的含义。

【问题讨论】:

  • 这些与+* 相同。写[0-9]{1,}[\.0-9]{0,} 的人根本不知道他们在做什么 - 这比\d+(?:\.\d+)? 要好得多(除非MSIE 2. 有效)。
  • 实际上,我的模式是忽略子版本,所以让\d+(?:\.\d+)*。轻松修复:)

标签: regex


【解决方案1】:

这是正则表达式中的无穷大

{0,} = * 意思是{0,infinity}

{1,} = + 是指{1,infinity}

【讨论】:

    【解决方案2】:

    这意味着没有上限,而是下限。例如

    见:http://regexr.com?31piu

    \d{3,}

    将匹配 1 的所有序列,其中有超过 3 个连续 1,无论是 四个 1 或十个 1

    1111----1111111111----11--1----11111111111111111111--111

    同样的方法,

    {1,} 表示 1 个或多个实例,即 + 通配符

    {0,} 表示 0 个或多个实例,即 * 通配符

    【讨论】:

      【解决方案3】:

      {n,} where n >= 0 :“重复前一个项目至少 n 次。贪心,所以在尝试与前一个项目较少匹配的排列之前,将匹配尽可能多的项目,直到达到前一项仅匹配 n 次。”

      参考this regex reference,里面有很多方便的例子:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多