preg_replace('/[^.]*$/','png','asdf.jpgea.jpg')
输出为 asdf.jpgea.pngpng png 最后
asdf.jpgea.pngpng
png
同时
preg_replace('/\w$/','png','asdf.jpgea.jpg')
输出 asdf.jpgea.jppng .
asdf.jpgea.jppng
* 影响方式 $ 行为?
*
$
这个 * (0次或以上)不会影响 $ + (1次或多次)以获得预期结果:
+
preg_replace('/[^.]+$/','png','asdf.jpgea.jpg');
基本上 * 导致 jpg 正在匹配 两次 而不是一次,因为 * 也不匹配。
jpg
这背后的技术解释相当复杂,我不想把它全部打出来,所以这里有一个很好的链接,其他人可以解释它:
https://stackoverflow.com/a/3420778/8001997