正则表达式,强制数字匹配\ d而不是\ w或点

时间:2017-12-07 08:43:02

标签: php regex preg-match

大家早上好,

这是我的问题:我的文件名为test1.pdf,我想检查.pdf之前的最后一个字符是否为数字。如果是,我想提取它。 以下正则表达式工作:

(\D*)(\d?)(\.pdf)

我得到了3个元素:test / 1 / .pdf

但现在我的文件名为test1test1.pdf。所以我试试这个正则表达式;

(\w*)(\d?)(\.pdf)

我的正则表达式不再起作用,因为我得到:test1test1 / .pdf而不是test1test / 1 / .pdf。因此.pdf之前的最后一位数字包含在(\ w *)

这个正则表达式将解决这个问题:

(\w*)(\d{1})(\.pdf)

但如果在.pdf之前没有数字,它就无法工作。 例如,它不匹配test1test.pdf。

我知道一些可以解决我的问题的正则表达式,但我觉得它们不是很优雅。有没有办法强制数字匹配\ d而不是\ w或点,或者有没有办法指定"括号结束"喜欢"字符串结束"与$?

感谢您的帮助或提示 (顺便说一句,我使用PHP和preg_match()函数)

0 个答案:

没有答案