深刻理解正則反引用和轉義符

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正則中的轉義符,當遇到多個`\` 的時候,咱們能夠先"去掉" 一個,而後,在去匹配。這樣就好理解啦。

相關文章
相關標籤/搜索