Извлечь часть URL в определенном формате - PullRequest
0 голосов
/ 25 декабря 2018

У меня есть твиттер-URL, которые могут принимать следующие форматы:

urls = [
  "https://twitter.com/TwitterDev/status/850006245121695744",
  "http://twitter.com/TwitterDev/status/850006245121695744",
  "twitter.com/TwitterDev/status/850006245121695744",
  "https://www.twitter.com/TwitterDev/status/850006245121695744",
  "http://www.twitter.com/TwitterDev/status/850006245121695744",
  "www.twitter.com/TwitterDev/status/850006245121695744",
  "m.twitter.com/TwitterDev/status/850006245121695744",
]

Я хочу получить имя пользователя "TwitterDev" из любого из вышеперечисленных.Как я могу получить слова / цифры / символы [sic] после ".com/" до следующего "/"?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

В соответствии с точной спецификацией, которую вы упомянули.

urls.map{|url| url.split(".com/", 2).last.split("/", 2).first}
# => ["TwitterDev", "TwitterDev", "TwitterDev", "TwitterDev", "TwitterDev", "TwitterDev", "TwitterDev"]
0 голосов
/ 25 декабря 2018

Я не могу написать ruby, но это то, что я получаю из автоматически сгенерированного кода с сайта regex101.com с моим регулярным выражением (?<=\.com\/)([a-zA-Z0-9]+)(?=\/), используя просмотр и оглядывающийся подход.Он просто захватывает часть строки, которая имеет .com/ до и / после нее.

re = /(?<=\.com\/)([a-zA-Z0-9]+)(?=\/)/m
str = '-https://twitter.com/TwitterDev/status/850006245121695744 

 -http://twitter.com/TwitterDev/status/850006245121695744 

 -twitter.com/TwitterDev/status/850006245121695744 

 -https://www.twitter.com/TwitterDev/status/850006245121695744 

 -http://www.twitter.com/TwitterDev/status/850006245121695744 

 -www.twitter.com/TwitterDev/status/850006245121695744 

 -m.twitter.com/TwitterDev/status/850006245121695744 '

# Print the match result
str.scan(re) do |match|
    puts match.to_s
end

РЕДАКТИРОВАНИЕ: Самый чистый и быстрый способ с использованием (?<=twitter\.com\/)[^\/]+

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...