Ruby 正则表达式与预期的数字不匹配

Ruby 正则表达式与预期的数字不匹配,ruby,regex,Ruby,Regex,我要从以下字符串中提取: /Monovolume/Honda+HR+V+1+6-11399031.htm 我想提取的是我用下面的正则表达式尝试的结尾处的8位数字: Monovolume\/.+(\d{7,}) 它表示7或更多,因为有些情况下只有7位数字。然而,匹配仅为7位,而不是上面字符串中的8位。当我只运行括号中的零件时,我得到了正确的结果。导致这种行为的原因是什么?我如何修复它 另外,我不能把“-”放在正则表达式中,因为它的出现是巧合。你很接近。您的问题是您的+将始终使用其中一个数字,因

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

/Monovolume/Honda+HR+V+1+6-11399031.htm
我想提取的是我用下面的正则表达式尝试的结尾处的8位数字:

Monovolume\/.+(\d{7,})
它表示7或更多,因为有些情况下只有7位数字。然而,匹配仅为7位,而不是上面字符串中的8位。当我只运行括号中的零件时,我得到了正确的结果。导致这种行为的原因是什么?我如何修复它


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

你很接近。您的问题是您的
+
将始终使用其中一个数字,因为默认情况下regex是“贪婪的”

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

Monovolume\/.+?(\d{7,})
             /|\
              |
它基本上会重复尽可能少的次数(当它达到7位或更多位数时)

更多信息请点击此处: