深刻理解正则反引用和转义符

1、正则反引用正则表达式

正则表达式,在PHP中我常常能用到。用的场景也不少,好比,正则匹配字符串,判断字符是否存在,正则替换等等。spa

例子一:code

 

$string = 'abcd';
$re = preg_replace('/(a)/', '\1A',$string);
echo $re;

//结果
// aAbcd

 

这里用到了正则的捕获组概念和反引用。blog

解释:字符串

捕获组咱们能够从第一个`(` 向后数, 第一个括号里面匹配到的内容,咱们能够用 \1 来引用,为了看的明显,特地拼接了 `A` ,其实咱们还能够用 $+数字来表示第几个捕获组。 这里能够用$1,效果和\1同样。string

例子二:io

$string = 'abcd';
$re = preg_replace('/(a)/', '$1B',$string);
echo $re;


//结果
//aBbcd

2、转义符class

什么是转义符?引用

在PHP中咱们用 `\` 来转译一些特殊的字符。总结

例子三:

$string = 'abcd';
$re = preg_replace('/(a)/', '\1B',$string);
echo $re;

//结果
//aBbcd    

解释: 这里的 \1 把是做为捕获组的反引用。

例子四:

$string = 'abcd';
$re = preg_replace('/(a)/', '\\1B',$string);
echo $re;

//结果
//aBcd

解释:这里的` \\1 `,第一个`\`,转译了第二个`\`, 那么就成了 `\1B` , 其实效果和例子三的 `\1` 是同样的。

 

例子五:

$string = 'abcd';
$re = preg_replace('/(a)/', '\\\1B',$string);
echo $re;



//结果
//\1Bbcd

解释:这里的`\\\1`,第一个`\`,转译了第二个`\`,那么就剩下了`\\1`,`\\` 输出 `\`,最后,就剩下 `1`了。

3、总结

一、PHP正则中的反引用,\1$1 效果是同样的,咱们均可以拿来用。

二、PHP正则中的转义符,当遇到多个`\` 的时候,咱们能够先"去掉" 一个,而后,在去匹配。这样就好理解啦。

相关文章
相关标签/搜索