的第一段假设我有以下网址:/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