preg_replace和美元符号

时间:2017-10-11 03:11:12

标签: php regex dollar-sign

preg_replace('/[^.]*$/','png','asdf.jpgea.jpg')

输出为asdf.jpgea.pngpng,为什么最后有两个png

同时,

preg_replace('/\w$/','png','asdf.jpgea.jpg')

输出asdf.jpgea.jppng

*是否会影响$的行为方式?

1 个答案:

答案 0 :(得分:0)

*(0次或更多次)不会影响$符号的行为方式,但您需要将其更改为+(1次或更多次)才能获得你期望的结果:

preg_replace('/[^.]+$/','png','asdf.jpgea.jpg');

基本上,*导致jpg匹配两次而非一次,因为*也不匹配。

这背后的技术解释非常复杂,我不想全部打字,所以这里有一个很好的链接,其他人解释它:

https://stackoverflow.com/a/3420778/8001997