2010-03-10 72 views
0
text = "I fixed bug #1234 and #7895 " 
regex = /#(\d*)/ 
m = regex.match(text) 
puts m.inspect #<MatchData "#1234" "1234"> 

在上述情况下,为什么我没有看到7895?什么是正确的解决方案?红宝石正则表达式不匹配

回答

4

正则表达式只匹配第一个匹配项(当然,根本不匹配)。 #(\d*)首先匹配#1234,以便返回一段文字。

如果你想多场比赛,也就是要搜索字符串,请使用String#scan或类似的东西。

+0

另外,你应该使用#(\ d +)而不是\ d * - 这个星星是零次或多次出现的,我不认为你想要字符串'I fixed bug #invalid'匹配。 – 2010-03-10 21:05:46

+0

好点。谢谢安德鲁。 – 2010-03-10 22:34:35