代码之家  ›  专栏  ›  技术社区  ›  shenkwen

preg\u替换和美元符号[重复]

  •  -1
  • shenkwen  · 技术社区  · 8 年前
    preg_replace('/[^.]*$/','png','asdf.jpgea.jpg')
    

    输出为 asdf.jpgea.pngpng png 最后

    同时

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

    输出 asdf.jpgea.jppng .

    * 影响方式 $ 行为?

    1 回复  |  直到 8 年前
        1
  •  0
  •   patrick3853    8 年前

    这个 * (0次或以上)不会影响 $ + (1次或多次)以获得预期结果:

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

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

    这背后的技术解释相当复杂,我不想把它全部打出来,所以这里有一个很好的链接,其他人可以解释它:

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

    推荐文章