如何在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