2011-05-06 217 views
1

我有一个字符串是这样的:如何提取字符串中最右边的数字?

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] 

但是,当将其应用于第一个字符串,它提取的用户名,不想要的号码的数字部分。

我该怎么做才能使它对两个字符串都起作用?

+0

最后一个数字意味着'101505775425654414'或者只'4' – diEcho 2011-05-06 10:47:05

+0

我不明白你想要做什么 – fl00r 2011-05-06 11:05:26

+0

你真的想做什么?我认为我们有一些XY综合征正在进行。 – 2011-05-06 16:20:16

回答

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"] 
0

对我的作品的正则表达式是这样的:

^.*?(\d+)$ 

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

+1

这假定数字总是在这个字符串的最后。如果最后可能有一些非数字字符,但您仍然想要捕获该号码,请使用^。*?(\ d +)\ D * $ – 2011-05-06 11:16:13

0

试试这个

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

$字符串的结尾相匹配。所以,我把从上/所有数字到字符串的结尾到捕获组1