使用Ruby从字符串中获取id
我有这样的字符串:使用Ruby从字符串中获取id,ruby,regex,string,Ruby,Regex,String,我有这样的字符串: “/detail/205193 foo var bar foo.html” “/detail/183863 parse foo.html” “/detail/1003 bar foo bar.html” 如何使用Ruby从it中获取ID(2051931838631003)?regex=/\/detail\/(\d+)-/ regex = /\/detail\/(\d+)-/ s = "/detail/205193-foo-var-bar-foo.html" id = re
- “/detail/205193 foo var bar foo.html”
- “/detail/183863 parse foo.html”
- “/detail/1003 bar foo bar.html”
regex=/\/detail\/(\d+)-/
regex = /\/detail\/(\d+)-/
s = "/detail/205193-foo-var-bar-foo.html"
id = regex.match s # => <MatchData "/detail/205193-" 1:"205193">
id[1] # => "205193"
$1 # => "205193"
s=“/detail/205193 foo var bar foo.html”
id=regex.match s#=>
id[1]#=>“205193”
$1 # => "205193"
MatchData
对象将在第一个元素中存储字符串的整个匹配部分,以及从第二个元素开始的任何匹配子组(取决于有多少匹配子组)
另外,Ruby提供了一个快捷方式,可以找到最近匹配的子组,其中
$1
也可以这样做
s = "/detail/205193-foo-var-bar-foo.html"
num = (s =~ /detail\/(\d+)-/) ? Integer($1) : nil
"/detail/205193-foo-var-bar-foo.html".gsub(/\/detail\//,'').to_i
=> 205193
一个简单的方法是去掉字符串中的
/detail/
部分,然后只需调用来查看剩下的内容:
“/detail/1003 bar foo bar.html”.gsub(“/detail/”,”).to_i#=>1003
只需说s[/\d+/]
可能的DUP:-:2:无效的正则表达式;没有以前的模式,“+”将在10:/detail\/(+d)处定义基数-/
[
"/detail/205193-foo-var-bar-foo.html",
"/detail/183863-parse-foo.html",
"/detail/1003-bar-foo-bar.html"
].each { |s| puts s[/\d+/] }