preg_replace('/[^.]*$/','png','asdf.jpgea.jpg')
输出为asdf.jpgea.pngpng
,为什么最后有两个png
?
同时,
preg_replace('/\w$/','png','asdf.jpgea.jpg')
输出asdf.jpgea.jppng
。
*
是否会影响$
的行为方式?
答案 0 :(得分:0)
*
(0次或更多次)不会影响$
符号的行为方式,但您需要将其更改为+
(1次或更多次)才能获得你期望的结果:
preg_replace('/[^.]+$/','png','asdf.jpgea.jpg');
基本上,*
导致jpg
匹配两次而非一次,因为*
也不匹配。
这背后的技术解释非常复杂,我不想全部打字,所以这里有一个很好的链接,其他人解释它: