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