如何组合两个正则表达式?将两个正则表达式合并为一个,匹配URL的第一部分和最后一部分?
例如,我有这个字符串:
/path/to/file/name.jpg
我要匹配这个字符串的两个部分只有一个正则表达式,所以我可以有“/path/to/file /“(除url的最后部分以外的所有内容)和”name.jpg“。可能吗?
编辑:我知道还有其他的方式来使用PHP函数,但我需要用正则表达式来完成!
如何组合两个正则表达式?将两个正则表达式合并为一个,匹配URL的第一部分和最后一部分?
例如,我有这个字符串:
/path/to/file/name.jpg
我要匹配这个字符串的两个部分只有一个正则表达式,所以我可以有“/path/to/file /“(除url的最后部分以外的所有内容)和”name.jpg“。可能吗?
编辑:我知道还有其他的方式来使用PHP函数,但我需要用正则表达式来完成!
if (preg_match('#^(.*?/)([^/]+)$#', $path, $matches))
{
list($all, $directory, $filename) = $matches;
}
即使有像pathinfo()
dirname()
和basename()
在这种特殊情况下,我根本不会使用正则表达式。用途:
$path = dirname('/path/to/file/name.jpg'); // /path/to/file
$filename = basename('/path/to/file/name.jpg'); // name.jpg
如果你需要一个正则表达式,使用这样的:
$str = 'path/to/file/name.jpg';
$pattern = '~(.*)(/.*)~';
preg_match($pattern, $str, $matches);
$path = $matches[1];
$filename = $matches[2];
使用pathinfo()
:
$foo = '/path/to/file/name.jpg';
$bits = pathinfo($foo);
print_r($bits);
这会给你:
Array
(
[dirname] => /path/to/file
[basename] => name.jpg
[extension] => jpg
[filename] => name
)
嘿,男士谢谢,我知道我可以用PHP的另一种方式做到这一点,但我真的需要与正则表达式。 – vitorsdcs
它的工作。谢谢! – vitorsdcs
+1我认为我们在房子里还有另一个正则表达大师! – ridgerunner