逆向引用一直都是很令人费解的名词,一直疑惑\\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
用这个例子最能说明啦,慢慢消化吧各位嘿嘿