我需要從URL中提取的後綴,這意味着:提取後綴
http://google.com/sports/golf =>運動/高爾夫 http://yahoo.com/blog?id=7 =>博客/ ID = 7
我怎麼能acheive與正則表達式(紅寶石樣式)?
謝謝
我需要從URL中提取的後綴,這意味着:提取後綴
http://google.com/sports/golf =>運動/高爾夫 http://yahoo.com/blog?id=7 =>博客/ ID = 7
我怎麼能acheive與正則表達式(紅寶石樣式)?
謝謝
使用URI
模塊.path + .query
。
uri = URI("http://google.com/sports/golf")
uri.path + "/" + uri.query
除此之外,如果你還需要,URI也會去除任何URI片段,即'sports/golf /?a = b#foo' foo將被剝離,但被保存在'uri.fragment'中 –
如何爲以下::)
require 'uri'
p URI.split("http://google.com/sports/golf").compact.drop(2).join("/")
p URI.split("http://yahoo.com/blog?id=7").compact.drop(2).join("/")
或者,
require 'uri'
a = ["http://google.com/sports/golf","http://stackoverflow.com/questions/15766337/extract-suffix-from-url-regex/15766456#15766456","http://yahoo.com/blog?id=7"]
a.each { |url| p URI.split(url).compact.drop(2).join("/") }
輸出:
"/sports/golf"
"https://stackoverflow.com/questions/15766337/extract-suffix-from-url-regex/15766456/15766456"
"/blog/id=7"
試試這個:
irb(main):011:0> /(?:http:\/\/\w+\.\w+\/)(.+)/.match("http://yahoo.com/blog?id=7")[1]
=> "blog?id=7"
irb(main):012:0> /(?:http:\/\/\w+\.\w+\/)(.+)/.match("http://google.com/sports/golf")[1]
=> "sports/golf"
irb(main):013:0>
你不需要這樣的正則表達式。 Ruby在stdlib中有一個'uri'庫,它完全適合這個。查看URI.parse()http://www.ruby-doc.org/stdlib-1.9.3/libdoc/uri/rdoc/URI.html –
你的問題不清楚。在什麼規則下'?'變成'/'?你總是想要結果中的一個斜槓?等等 – sawa