php regex用于文件扩展名之前的最后一个数字

时间:2013-11-15 09:22:38

标签: php regex filenames filepath

任何人都知道如何使用preg_match来获取最后一位数字:

images/listings/listings_id_15_4.png

images/listings/listings_id_15_4.jpg

扩展名可能不同,我只需要找到“”之前的最后一位数字。 从这两个字符串我只需要'4'

2 个答案:

答案 0 :(得分:1)

您可以使用$,即[在字符串末尾]

您从获得扩展的部分开始:

\.[a-zA-Z]$ // this will match '.png' and '.jpg'
// Or alternatively
\.\w{2,4}$ // this will match '.png' and '.jpg', 2 till 4 chars long

然后你想得到它前面的数字,所以从后面展开它:

([0-9]+)\.[a-zA-Z]+$ // this will also select the number in front of it

现在也选择其余部分,而不是将它放在一个组中(同样适用于扩展):

.*?([0-9]+)\.[a-zA-Z]+$ // this will select the whole thing, but only the number you want is in a group

使用该正则表达式,您可以在代码中使用\\1$1

之类的组

答案 1 :(得分:0)

/\d(?=\.\w+$)/

这匹配一个数字,后跟一个点和一个或多个单词字符(这是我想要的扩展名)。
如果您想要一个完整的数字而不是一个数字,请在+后添加\d