3

我正在尝试从四方 URL 中提取 user_id,如下所示:

 https://foursquare.com/user/99999999

以下正则表达式正是我需要的(一系列以行尾终止的数字):

\d+$

但是,我不确定如何将字符串设置为等于匹配的字符。我知道 sub 和 gsub,但是这些方法将匹配的字符串替换为其他内容。

我正在寻找一种方法来专门提取与我的正则表达式匹配的字符串部分(如果存在)

4

2 回答 2

10

我喜欢使用 match() 的返回:

任何包含在正则表达式中的捕获 () 中的内容都会分配给匹配结果数组

"https://foursquare.com/user/99999999".match(/(\d+)\z/)[1] #=> "99999999"
于 2012-07-17T21:52:42.900 回答
5
>> "https://foursquare.com/user/99999999"[/(\d+)\z/, 1]
=> "99999999"

>> "https://foursquare.com/user/99999999" =~ /(\d+)\z/
=> 28
>> $1
=> "99999999"

>> "https://foursquare.com/user/99999999".split('/').last
=> "99999999"

有很多方法。String#[]虽然我个人喜欢

于 2012-07-17T21:50:01.153 回答