Как вы можете вернуть все после последней косой черты (/) в строке Ruby

Мне нужно, чтобы строка после последнего / была возвращена.

Например, https://www.example.org/hackerbob, он должен вернуть "hackerbob".

Ответ 1

Я не думаю, что регулярное выражение - хорошая идея, видя, насколько проста задача:

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"

Ответ 2

Используйте правильный инструмент для задания:

require 'uri'
url = "https://www.facebook.com/hackerbob"
URI.parse(url).path[1..-1]  # => "hackerbob"

Ответ 3

Еще один образец

str = 'https://www.facebook.com/hackerbob'
ending = str.match(/.com\/(.*)/)
p ending[1]

Ответ 4

Что вы можете:

string = 'https://www.facebook.com/hackerbob'
string =~ /^https?:\/\/www\.facebook\.com\/(.*)/
$1

Ответ 5

Может использовать это

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

Ответ 6

Используй это

 1.9.3p194 :039 > line = 'https://www.facebook.com/hackerbob'
 1.9.3p194 :039 > line.match(/.com\/(\w+$)/)[1]  #    => "hackerbob"

Ответ 7

Вы можете попробовать /[a-zA-Z]+://[az]+.[az]+.[az]+/(.+)/, если вы используете его для строки выше или любого другого аналогичного URL-адреса. Отличным инструментом для регулярного выражения является http://www.rubular.com