我正在尝试使用Ruby解析URL,并在" /"之后返回与单词匹配的URL。在.com,.org等。
如果我想捕捉"问题"在诸如的URL中
https://stackoverflow.com/questions
我也希望能够捕获https://stackoverflow.com/blah/questions
。但我不想捕获https://stackoverflow.com/queStioNs
。
目前,我的表达式可以与https://stackoverflow.com/questions
匹配,但不能与"问题"匹配接着是" /",或2" /" s等。
正则表达式的结尾是使用\bquestions\
。
我尝试过([a-zA-Z]+\W{1}+\bjob\b|\bjob\b)
,但这只能获得/questions
和/blah/questions
但不是/blah/bleh/questions
的网址。
我做错了什么,我如何匹配我需要的东西?
答案 0 :(得分:4)
您实际上并不需要正则表达式,而是可以使用URI module:
require 'uri'
urls = ['https://stackoverflow.com/blah/questions', 'https://stackoverflow.com/queStioNs']
urls.each do |url|
the_path = URI(url).path
puts the_path if the_path.include?'questions'
end
答案 1 :(得分:0)
我不知道是否有任何简单的方法,这是我的解决方案:
regexp = '^(https|http)?:\/\/[\w]+\.(com|org|edu)(\/{1}[a-z]+)*$'
group_length = "https://stackoverflow.com/blah/questions".match(regexp).length
"https://stackoverflow.com/blah/questions".match(regexp)[group_length - 1].gsub("/","")
它将返回'questions'
。
根据您的评论更新:
使用[\S]*(\/questions){1}$
希望有所帮助:)