很抱歉,标题令人困惑。我所要做的就是一些简单的正则表达式:
文字:/thing/images/info.gif
我想要的是:info
我的正则表达式(不完全正常):([^\/]+$)(.*?)(?=\.gif)
(注意:[^\/]+$
会返回info.gif
)
感谢您的帮助!
答案 0 :(得分:1)
我说你不需要匹配所有字符串,所以你可以更通用。如果您知道您的字符串始终包含您可以使用的路径:
preg_match( '/([^\/]+)\.\w+$/', "/thing/images/info.gif", $matches) ;
print_r( $matches );
它对任何文件名都有效,甚至包含my_file.name.jpg
之类的点或/thing/images/my image.gif
演示here。
结构是(从正则表达式的末尾向左移动):
答案 1 :(得分:0)
不确定字符串有多复杂,但这似乎适用于测试字符串:
preg_match('![^/.]+(?=\.gif)!', '/thing/images/info.gif', $m);
匹配不/
非.
后跟.gif
。
答案 2 :(得分:0)
编辑(Sublime):
查找:^(.*)(\/)(.*)(\.)(.*)$
将其替换为:\3
在PHP中:
<?php
preg_match('/^(.*)(\/)(.*)(\.)(.*)$/', '/thing/images/info.gif', $match);
echo $match[3];