我想给正则表达式一个模式并强制它读取它...
http://example.com/w/2/1/x/some-12345_x.png
我想定位“some-12345_x”
我使用了这个/\/(.*).png/
,它由于某种原因不起作用
我如何强制它记住它必须以/开始并以.png结束?
答案 0 :(得分:1)
你可以这样做:
^.*/(.*)\.png$
捕获最后/
到最后.png
之后发生的事情。
答案 1 :(得分:1)
如果你总是希望获得最终的文件名,减去扩展名,你可以使用PHP的substr()
而不是试图提出一个正则表达式:
$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];
答案 2 :(得分:1)
出于特殊原因,你可能需要在这种情况下使用reg-ex,但是如果不这样做,可以选择使用reg-ex:
$url = "http://example.com/w/2/1/x/some-12345_x.png";
$value = pathinfo($url);
echo $value['filename'];
输出:
some-12345_x
手册中的答案 3 :(得分:1)
怎么样:
~([^/]+)\.png$~
这将匹配除/
之外的任何内容,直到字符串末尾的.png
。