php正则表达式中的逆向引用

逆向引用一直都是很令人费解的名词,一直疑惑\\1为什么能引用到前面的内容。跟文章说的一样例子最能说明一切,下面先来看原文章的例子:

    1.  \b(\w+)\b\s+\1\b可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容(也就是前面匹配的那个单词)(\1)。只要你看得懂这个比较简单的实例相信也不用我过多解释。

    2.  这是我从网上找到的例子:

    <?php
    //正则表达式中的逆向引用($0-99或\\0-99)和子模式以(/()/)开始
    $string = "{April 15, 2003}";

    //'w'匹配字母,数字和下划线,'d'匹配0-99数字,'+'元字符规定其前导字符必须在目标对象中连续出现一次或多次
    $pattern = "/{(\w+) (\d+), (\d+)}/i" //在字符串中要搜索的匹配项
    $replacement1 = "\${1}1,\$3";
    $replacement2 = "\$0";
    $replacement3 = "\$1";
    $replacement4 =
"\$2";
    $replacement5 = "\$3";
    echo
"<BR>";
    //字符串被替换为与第 n 个被捕获的括号内的子模式所匹配的文本
    print preg_replace($pattern, $replacement1, $string);
    echo "<BR>";
    print preg_replace($pattern, $replacement2, $string);
    echo "<BR>";
    print preg_replace($pattern, $replacement3, $string);
    echo "<BR>";
    print preg_replace($pattern, $replacement4, $string);
    echo
"<BR>";
    print preg_replace($pattern, $replacement5, $string);
    echo "<BR>";
    ?>

    结果:
    April1,2003
    {April 15, 2003}
    April
    15
    2003
    用这个例子最能说明啦,慢慢消化吧各位嘿嘿

posted on 2009-10-10 16:38  14的路  阅读(1372)  评论(1编辑  收藏  举报

导航

友情链接:源码下载