对不起,如果标题混乱。所有我想要做的是一些简单的正则表达式:正则表达式后最后/和之前
文本:/thing/images/info.gif
而我想要的是:info
我正则表达式(不完全工作):([^\/]+$)(.*?)(?=\.gif)
(注:[^\/]+$
返回info.gif
)
感谢您的帮助!
对不起,如果标题混乱。所有我想要做的是一些简单的正则表达式:正则表达式后最后/和之前
文本:/thing/images/info.gif
而我想要的是:info
我正则表达式(不完全工作):([^\/]+$)(.*?)(?=\.gif)
(注:[^\/]+$
返回info.gif
)
感谢您的帮助!
我说你不需要^(.*)(\/)(.*)(\.)(.*)$
将其替换匹配所有的字符串,所以你可以更通用。如果你知道你的字符串总是包含的路径,你可以只使用:
preg_match('/([^\/]+)\.\w+$/', "/thing/images/info.gif", $matches) ;
print_r($matches);
,这将是任何有效的文件名,连名字包含像my_file.name.jpg
点或场所,如/thing/images/my image.gif
演示here。
的结构(从正则表达式移动到左侧的端部):
它工作在regex101,但是当我尝试在我的代码中,它返回'info.gif' – Kenny
更新和测试。我的输出是'Array([0] => info.gif [1] => info)' – ColOfAbRiX
好吧,所以我只需要使用返回数组的'[1]'部分。我喜欢这个更通用的正则表达式,它会工作得最好。谢谢!! – Kenny
不知道如何串复杂得多是但这似乎在测试字符串工作:
preg_match('![^/.]+(?=\.gif)!', '/thing/images/info.gif', $m);
匹配功能不在/
不.
其次.gif
。
我结束了,它的作品: '$ pattern =“/ [^ \ /。] +(?= \。gif)/”;' '$ strain_01 = preg_match($ pattern,$ filtered_text,$ final_text );' 'return $ final_text [0];' – Kenny
然后你不能在文件名中有多个点! – ColOfAbRiX
在编辑器(崇高):
查找:\3
在PHP:
<?php
preg_match('/^(.*)(\/)(.*)(\.)(.*)$/', '/thing/images/info.gif', $match);
echo $match[3];
为什么不是'$ result = pathinfo('/ thing/images/info.gif',PATHINFO_FILENAME)''? – AbraCadaver
原因我正在刮网页。但在正常情况下好主意! – Kenny
如何回合'[^ /。] +' – AbraCadaver