如何在Ruby字符串中的最后一个斜杠(/)之后返回所有内容
我有一个字符串,希望在最后一个/
之后返回。
例如,对于https://www.example.org/hackerbob
,它应该返回"hackerbob"
。
我不认为正则表达式是个好主意,看看任务有多简单:
irb(main):001:0> s = 'https://www.facebook.com/hackerbob' => "https://www.facebook.com/hackerbob" irb(main):002:0> s.split('/')[-1] => "hackerbob"
当然你也可以使用正则表达式来做,但它的可读性要低得多:
irb(main):003:0> s[/([^\/]+)$/] => "hackerbob"
使用正确的工具:
require 'uri' url = "https://www.facebook.com/hackerbob" URI.parse(url).path[1..-1] # => "hackerbob"
还有一个样本
str = 'https://www.facebook.com/hackerbob' ending = str.match(/.com\/(.*)/) p ending[1]
可以用这个
subject = /(\/)([^\/]+)\Z/i.match(subject) if match # match start: match.begin(0) # match end (exclusive): match.end(0) # matched text: match[0] # backreference n start: match.begin(n) # backreference n end (exclusive): match.end(n) # backreference n text: match[n] else # Match attempt failed end
用它
1.9.3p194 :039 > line = 'https://www.facebook.com/hackerbob' 1.9.3p194 :039 > line.match(/.com\/(\w+$)/)[1] # => "hackerbob"
你当然可以:
string = 'https://www.facebook.com/hackerbob' string =~ /^https?:\/\/www\.facebook\.com\/(.*)/ $1
您可以尝试/ [a -AA-Z] +:// [az] +。[az] +。[az] +/(.+)/如果您将其用于上面的字符串或任何其他类似的url。 用于正则表达式的一个很好的工具是http://www.rubular.com