进阶 - 引用

  • 作者:KK

  • 发表日期:2017.10.14


基于JS讲解

先看JS的示例代码:

console.log(
	'11aabbaabbcc22'.match(/a+b+a+b+/)[0],

	'11aabbaabbcc22'.match(/(a+)(b+)\1\2/)[0]	//效果同上
);

其实就是通过\1\2来引用了前面两个括号部分的表达式,以免重复书写(\num的形式,num是正整数)

简单理解就是封装代码,重复调用,不重写这块代码,在繁杂又有重复匹配项的表达式中可以这样用,不过需求较少,毕竟重复写也不碍大家什么事,偶尔写嘛,经常写的话可能就要注意这个了


PHP代码:

header('Content-type:text/plain');

preg_match('#a+b+a+b+#', '11aabbaabbcc22', $matchResult1);
print_r($matchResult1[0]); // aabbaabb

preg_match('#(a+)(b+)\1\2#', '11aabbaabbcc22', $matchResult2);
print_r(PHP_EOL . $matchResult2[0]); //效果同上