不用正则也可以吧,不知这样满足你需求,正则不划算(呵,开玩笑了)
$str0 = "c:\$21\a23.gif;d:\image\11\j72.gif;c:\$21\a23.gif";
$tmp = explode(";", $str0);
foreach($tmp as $imsrc)
{
   $basename = basename($imsrc);
   echo "image\\".$basename."<br>";
   unset($basename);
}

解决方案 »

  1.   

    $a = "c:\$21\a23.gif;d:\image\11\j72.gif";
    $b = preg_replace("/c:\\$21/", "imagge", $a);
    $b = preg_replace("/d:\\\image\11/", "jimagge", $b);
    echo $b;不晓得楼主的确切意思,只能凭自己理解写了
      

  2.   

    <?php
    $str='c:\$21\a23.gif;\image\ss\sds\..\abc\345346.gif;d:\image\11\j72.gif';
    preg_match_all("/\\\\{1}.[^\.|\\\\]*.gif[;]{0,1}/is",$str,$matches);
    $result="";
    foreach($matches[0] as $key=>$v){
    $result.="imagge".$v;
    }
    echo $result;
    die();
    ?>
      

  3.   

    <?php
    $str='c:\$21\a23.gif;\image\ss\sds\..\abc\345346.gif;d:\image\11\j72.gif';
    preg_match_all("/\\\\{1}.[^\.|\\\\]*.gif[;]{0,1}/is",$str,$matches);
    $result="";
    foreach($matches[0] as $key=>$v){
    $result.="imagge".$v;
    }
    echo $result;
    die();
    ?>
      

  4.   

    $s = <<< TEXT
    c:\\$21\\a23.gif;d:\\image\\11\\j72.gif
    c:\\$21\\a23.gif
    TEXT;echo str_replace(array('c:\\$21', 'd:\\image'), array('imagge','jimagge'), $s);out
    imagge\a23.gif;jimagge\11\j72.gif
    imagge\a23.gif 注意:明文书写时串中的\要写做\\
      

  5.   

    多谢楼上的各位了,我后来用的就是一楼“lantersen(蓝水仁) ”的方法。不过之前用是想要用正则式,一直没写成。所以才来请教各位,更好的学习一下正则。
      

  6.   

    不好意思
    c:\$21\a23.gif;d:\image\11\j72.gif
    替换成imagge\a23.gif;jimagge\72.gif这块的“jimage”应该是“image”。写错了其实是想用ereg_replace()或preg_replace()来实现,不知道有没这可能?
      

  7.   

    请问“mrshelly(Shelly)” “\\\\”表示什么?
      

  8.   

    表达式:
    ([^;\\]+\\)*([^;]+)替换为:
    images\$2测试工具:
    http://www.regexlab.com/zh/replshop.asp?pat=%28%5B%5E%3B%5C%5C%5D%2B%5C%5C%29*%28%5B%5E%3B%5D%2B%29&rto=images%5C%242&txt=c%3A%5C%2421%5Ca23.gif%3Bd%3A%5Cimage%5C11%5Cj72.gif%3Bc%3A%5C%2421%5Ca23.gif