2011-05-06 215 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