的第一段假設我有以下網址:/members/some/path/route
正則表達式來捕獲一切,但一個URL
我希望有一個正則表達式,將只返回/some/path/route
到目前爲止,我有[^\/]\/.*
但是,因爲它返回不起作用s/some/path/route
有人能幫我一把嗎?如果有人能告訴我爲什麼我的正則表達式不起作用,我還想知道爲什麼它不起作用。
我使用的紅寶石。
的第一段假設我有以下網址:/members/some/path/route
正則表達式來捕獲一切,但一個URL
我希望有一個正則表達式,將只返回/some/path/route
到目前爲止,我有[^\/]\/.*
但是,因爲它返回不起作用s/some/path/route
有人能幫我一把嗎?如果有人能告訴我爲什麼我的正則表達式不起作用,我還想知道爲什麼它不起作用。
我使用的紅寶石。
假設你使用javascript:
您正則表達式將
result = url.match(/(?:\/.*?)(\/.*)/g);
和你期望的字符串將在result[1]
舉行如果使用RUBY
if url =~ /(?:\/.*?)(\/.*)/
result = $~[1]
end
OR
regexp = /(?:\/.*?)(\/.*)/
match = regexp.match(url)
if match
result = match[1]
else
result = ""
end
你需要找到第二個「/」,並採取其他
preg_match("/\/(.*?)(\/.*)/", $url, $preg);
print_r($preg);
回報
Array
(
[0] => /members/some/path/route
[1] => members
[2] => /some/path/route
)
不過,我建議不使用正則表達式,因爲它是一個簡單的字符串,explode()功能會做
$path_array = array_slice(explode("/", $url), 2); // we are slicing at 2, because there is a leading '/' at the beginning
$new_path = "/".implode("/", $path_array);
echo $new_path;
我不會使用這個正則表達式。相反,我會使用Pathname#each_filename構造一個數組,其元素是路徑的每個組件。
str = "/members/some/path/route"
require "pathname"
Pathname(str).each_filename.to_a[1..-1].join('/')
#=> "some/path/route"
我們看到:
Pathname(str).each_filename.to_a[1..-1]
#=> ["members", "some", "path", "route"]
它使用類方法Kernel::Pathname
。我沒有找到該文檔(這將是與文檔的Object),但我們可以確認:
method(:Pathname).owner
#=> Kernel
這類似於類的方法Kernel::Array,Kernel::String及其他:
Array(21) # => [21]
String(19) # => "19"
你可以改爲寫:
Pathname.new(str).each_filename.to_a[1..-1].join('/')
#=> "some/path/route"
你用什麼語言?使用Javascript/C#/的Java/PHP? – Saleem
哦,廢話,你的權利! – Thermatix
對不對?你沒有提到語言名稱 – Saleem