Ruby on rails 将字符串设置为Rails正则表达式找到的匹配项

Ruby on rails 将字符串设置为Rails正则表达式找到的匹配项,ruby-on-rails,regex,string,Ruby On Rails,Regex,String,我试图从一个foursquare URL中提取用户id,如下所示: https://foursquare.com/user/99999999 下面的正则表达式正是我需要的(一系列以行尾结束的数字): 但是,我不确定如何将字符串设置为匹配的字符。我知道sub和gsub,但是这些方法用一个匹配的字符串替换其他的字符串 我正在寻找一种方法,专门提取与正则表达式匹配的字符串部分(如果存在) 有很多方法。我个人喜欢String#[],但我喜欢使用match()返回: 任何封装在正则表达式中的captu

我试图从一个foursquare URL中提取用户id,如下所示:

 https://foursquare.com/user/99999999
下面的正则表达式正是我需要的(一系列以行尾结束的数字):

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

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


有很多方法。我个人喜欢
String#[]
,但我喜欢使用match()返回:

任何封装在正则表达式中的capture()中的内容都会被分配给匹配结果数组

"https://foursquare.com/user/99999999".match(/(\d+)\z/)[1] #=> "99999999"

有趣的是,有多种方法可以做到这一点。出于好奇,你能解释一下第二个的语法吗?捕获的内容存储在$1到$9中。谢谢。仅供参考,使用
String#match
比我在回答中向您展示的任何东西都要慢
>> "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"
"https://foursquare.com/user/99999999".match(/(\d+)\z/)[1] #=> "99999999"