我想给正则表达式一个模式并强制它全部阅读..
http://example.com/w/2/1/x/some-12345_x.png
我想定位“some-12345_x”
我用了这个/\/(.*).png/
,由于某种原因它不起作用
我如何强制它记住它必须以/开头并以.png结尾?
如果您总是想获得最终的文件名,减去扩展名,您可以使用 PHPsubstr()
而不是尝试提出正则表达式:
$lastSlash = strrpos($url, '/') + 1;
$name = substr($url, $lastSlash, strrpos($url, '.') - $lastSlash);
此外,更易读的方法是使用 PHP 的basename()
:
$filename = basename($url);
$name = substr($filename, 0, strpos($filename, '.'));
要实际使用正则表达式,您可以使用以下模式:
.*/([^.]+).png$
要将其与 PHP 一起使用preg_match()
:
preg_match('|.*/([^.]+).png$|', $url, $matches);
$name = $matches[1];
在这种情况下,出于特定原因,您可能需要使用 reg-ex,但这里有一个您不需要的替代方法:
$url = "http://example.com/w/2/1/x/some-12345_x.png";
$value = pathinfo($url);
echo $value['filename'];
输出:
some-12345_x
手册中的pathinfo()
你可以做:
^.*/(.*)\.png$
它捕获了最后一个/
直到最后发生的事情.png
。
怎么样:
~([^/]+)\.png$~
这将匹配除字符串末尾/
之外的任何内容。.png