我試圖刪除URL正則表達式來刪除一個網址的網頁部分紅寶石
。例如網頁部分,
www.example.com/home/index.html
到
www.example.com/home
任何幫助表示讚賞。
謝謝
我試圖刪除URL正則表達式來刪除一個網址的網頁部分紅寶石
。例如網頁部分,
www.example.com/home/index.html
到
www.example.com/home
任何幫助表示讚賞。
謝謝
如果你的心臟上設置使用正則表達式,你知道你的網址,將是非常簡單的,你可以使用(.*)/.*
前的最後捕捉到的一切/你的URL。
irb(main):007:0> url = "www.example.com/home/index.html"
=> "www.example.com/home/index.html"
irb(main):008:0> regex = "(.*)/.*"
=> "(.*)/.*"
irb(main):009:0> url =~ /#{regex}/
=> 0
irb(main):010:0> $1
=> "www.example.com/home"
也許/(.*)/.*$/? – parallelgeek 2012-04-21 23:02:46
這可能是一個好主意,不要在可能的情況下使用正則表達式。 You may summon Cthulhu。嘗試使用屬於標準庫一部分的URI
庫。
require "uri"
result = URI.parse("http://www.example.com/home/index.html")
result.host # => www.example.com
result.path # => "/home/index.html"
# The following line is rather unorthodox - is there a better solution?
File.dirname(result.path) # => "/home"
result.host + File.dirname(result.path) # => "www.example.com/home"
+1網址都是不正規的,不能用正則表達式解析它們,使用URI LIB – clyfe 2010-09-30 10:52:29
Addressable :: URI是Ruby的另一個很好的URI模塊,功能更全面。儘管如此,Ruby的內置URI應該足夠用於此目的。 http://github.com/sporkmonger/addressable – 2010-09-30 14:48:09
http://addressable.rubyforge.org/是可尋址的主頁面。 – 2010-09-30 14:55:45
irb(main):001:0> url="www.example.com/home/index.html"
=> "www.example.com/home/index.html"
irb(main):002:0> url.split("/")[0..-2].join("/")
=> "www.example.com/home"
儘管這在技術上有效,但會在不同的深度URL(/home/index.html vs /admin/users/index.html)上打破。這就是爲什麼URI.parse更好。 – 2010-09-30 12:45:21
@Jason:在什麼情況下'0 ..- 2'會中斷? – 2010-09-30 13:45:28
我重新讀這個,你是對的,0 ..- 2應該始終工作。我仍然投票使用URI.parse。 – 2010-10-01 14:17:07
又見http://stackoverflow.com/questions/4716513/ruby-regular-expression-to-match-a-url – rogerdpack 2013-11-23 14:26:53