说我的网址是
https://foo.bar.com/somedirectory/somefile.php
或
http://abc.bar.co.uk/somedirectory/somefile.php
正则表达式会得到什么
/somedirectory/somefile.php
或
somedirectory/somefile.php
答案 0 :(得分:2)
假设您的网址始终以http://
或https://
开头,这应该有效(因为您没有指定语言,这是Perl中的实现):
use strict;
use warnings;
my @urls=("https://foo.bar.com/somedirectory/somefile.php", "http://abc.bar.co.uk/somedirectory/somefile.php");
foreach my $url(@urls)
{
if($url=~/^http(?:s)?:\/\/[^\/]+(\/.*)$/)
{
print "$1\n";
}
else
{
print "$url did not match!\n";
}
}
输出结果为:
/somedirectory/somefile.php
/somedirectory/somefile.php
答案 1 :(得分:1)
<强>代码强>
使用javascript(你可以测试它here):
返回“/somedirectory/somefile.php”:
var inputString = "https://foo.bar.com/somedirectory/somefile.php";
var regex = /https?:[\/]{2}\S*?(\/\S*)/;
var outputString = inputString.replace(regex,"$1");
alert(outputString);
要返回“somedirectory / somefile.php”,请更改正则表达式:
var regex = /https?:[\/]{2}\S*?\/(\S*)/;
<强>正则表达式强>
核心正则表达式如下。这可能需要根据您使用的语言进行一些调整:
https?:[\/]{2}\S*?(\/\S*)
要为ftp站点扩展此功能,您可以使用
(ht|f)tps?:[\/]{2}\S*?(\/\S*)