匹配直到正则表达式中的另一个表达式

时间:2016-02-19 13:20:43

标签: php regex

我有以下系列的字符串。我需要只匹配每个中的某个点,在文件扩展名之后省略数字。

folder/file.ext
folder/folder/file.ext
file.ext
file.file.ext
folder/file.ext/320
folder/folder/file.ext/320
file.ext/320
file.file.ext/320
folder/file.ext/320/240
folder/folder/file.ext/320/240
file.ext/320/240
file.file.ext/320/240

换句话说,我想将上述内容转换为:

folder/file.ext
folder/folder/file.ext
file.ext
file.file.ext
folder/file.ext
folder/folder/file.ext
file.ext
file.file.ext
folder/file.ext
folder/folder/file.ext
file.ext
file.file.ext

我使用以下表达式来匹配文件夹,文件和扩展名:

[a-zA-Z0-9_/.-]+

但它偶然会匹配文件名后可以添加的/000/000/000

此表达式越来越接近,但遗漏了.ext

(.+?)(\.[^.]*$|$)

如何编写一个选择文件夹,文件和扩展名的表达式,但在扩展名后省略了什么?

1 个答案:

答案 0 :(得分:1)

我只是这样做:

^(.+\.[^/]+) 

这将匹配路径+文件名+扩展名,并将它们保留在组1中。

仅当扩展后路径中没有点时才有效。

相关问题