如何在字符串中提取最正确的数字?

时间:2011-05-06 10:40:22

标签: ruby regex

我有这样的字符串:

https://www.facebook.com/username_with_number_14/posts/101505775425654414
https://www.facebook.com/username/posts/101505775425654466

我需要在Ruby中提取字符串末尾的数字。在第一个字符串中,它是第二个和最后一个数字,而在第二个字符串中,它是第一个,唯一的和最后一个数字。

目前我正在提取这样的数字:

int1 = Regexp.new('.*?(\\d+)',Regexp::IGNORECASE).match()[1]

但是当它应用于第一个字符串时,它会提取用户名的数字部分,而不是所需的数字。

我该怎么做才能在两个字符串上都能正常工作?

3 个答案:

答案 0 :(得分:2)

text = <<ENDTEXT
https://www.facebook.com/username_with_number_14/posts/101505775425654414
https://www.facebook.com/username/posts/101505775425654466
ENDTEXT

p text.lines.map{|line| line.scan(/\d+/).last}
#=> ["101505775425654414", "101505775425654466"]

答案 1 :(得分:0)

对我来说像这样的正则表达式:

^.*?(\d+)$

看这里:http://rubular.com/r/CJzsgjedqJ

答案 2 :(得分:0)

试试这个

int1 = Regexp.new('.*\\/(\\d+)$',Regexp::IGNORECASE).match()[1]

$匹配字符串的结尾。所以我将最后一个/的所有数字放到字符串的末尾,进入捕获组1。