正则表达式未按预期匹配数字

时间:2014-01-08 08:52:20

标签: ruby regex

我想要提取以下字符串:

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

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

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

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

P.S。我不能把“ - ”放在正则表达式中,因为它的外观很巧合。

1 个答案:

答案 0 :(得分:2)

你非常接近。您的问题是,.+将始终使用其中一个数字,因为正则表达式默认为“贪婪”。

我不确定你的要求,但你可以做一个懒惰的比赛:

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

它基本上会重复次数(当它达到7位或更多位数时)。

<强> See it live

此处有更多信息:Regex Lazy Quantification