PHP 正则表达式用于文件扩展名之前的最后一个数字


php regex for last number before file extension

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

图片/列表/listings_id_15_4.png
图片/列表/listings_id_15_4.jpg

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

您可以使用

$,这意味着[在字符串末尾]

您从获取扩展名的部分开始:

'.[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

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

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