以特定格式提取URL的一部分

时间:2018-12-25 09:13:15

标签: ruby

我的Twitter 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"。如何获得".com/"之后到下一个"/"之后的单词/数字/字符[sic]?

2 个答案:

答案 0 :(得分:0)

我无法编写ruby,但这是我从regex101.com网站上自动生成的代码,其中使用{strong>后置和向后看方法。它只是抓取前面(?<=\.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

的最快捷方式

答案 1 :(得分:0)

遵循您提到的确切规范。

urls.map{|url| url.split(".com/", 2).last.split("/", 2).first}
# => ["TwitterDev", "TwitterDev", "TwitterDev", "TwitterDev", "TwitterDev", "TwitterDev", "TwitterDev"]