【问题标题】:Regex not matching number as expected正则表达式与预期的数字不匹配
【发布时间】:2014-01-08 17:21:11
【问题描述】:

我想从中提取以下字符串:

/Monovolume/Honda+HR+V+1+6-11399031.htm

我要提取的是末尾的 8 位数字,我尝试使用以下正则表达式:

Monovolume\/.+(\d{7,})

它说 7 或更多,因为有些情况下只有 7 位数字。但是,匹配只有 7 位数字,而不是上述字符串中的 8 位数字。当我只运行括号中的部分时,我会得到正确的结果。是什么导致了这种行为,我该如何解决?

附:我不能把“-”放在正则表达式中,因为它的出现是巧合。

【问题讨论】:

    标签: ruby regex


    【解决方案1】:

    你很亲密。您的问题是您的 .+ 将始终使用其中一位数字,因为正则表达式默认为“贪婪”。

    我不确定你的要求,但你可以做一个惰性匹配:

    Monovolume\/.+?(\d{7,})
                 /|\
                  |
    

    它基本上会尽可能少地重复(当它达到 7 位或更多位数时)。

    See it live

    更多信息在这里:Regex Lazy Quantification

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多