abs()变成#T=abs这样吗?前面的好象没有规律吗?

解决方案 »

  1.   

    "/(([a-z]+)\(\))/i"
    =>
    #T=\2\n\1
      

  2.   

    不只是把abs()变成#T=abs(),而是先把每一行的内容都复制一份
    如果一次不成,多次也可以。
      

  3.   

    <?php
    $str = <<<EOT
    abs()
    acos()
    acosh()
    EOT;echo preg_replace('|(\w+)\(\)|i', "#T=\$1\n\$0", $str);
    ?>output:
    #T=abs
    abs()
    #T=acos
    acos()
    #T=acosh
    acosh()
      

  4.   

    谢谢sandyuk(白日做梦),就是这样的。
      

  5.   

    <?php
    $s = <<< EOT
    abs()
    acos()
    acosh()
    EOT;echo preg_replace("/(\w+)(\(\))/", "#T=$1\n$1$2", $s);
    ?>
    out:
    #T=abs
    abs()
    #T=acos
    acos()
    #T=acosh
    acosh()
      

  6.   

    只用规则式?
    在支持规则式子匹配引用的系统中可以完成
    比如 /^([a-zA-Z]+)/#T=\1\n\1/
    不过在具体的系统中还要注意转义等等以保证语句表示意思的准确性,比如要完成这个工作,在VIM工具中实际输入的是
    %s/^\([a-zA-Z]\+\)/#T=\1\r\1/g