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

2022-08-27 01:45:10 字數 1672 閱讀 3961

一、正則反引用

正規表示式,在php中我經常能用到。用的場景也很多,比如,正則匹配字串,判斷字元是否存在,正則替換等等。

例子一:

$string = 'abcd';

$re = preg_replace('/(a)/', '\1a',$string

);echo

$re;

//結果

// aabcd

這裡用到了正則的捕獲組概念和反引用。

解釋:

捕獲組我們可以從第乙個`(` 向後數, 第乙個括號裡面匹配到的內容,我們可以用\1

來引用,為了看的明顯,特意拼接了

`a` ,其實我們還可以用$+數字來表示第幾個捕獲組。 這裡可以用$1,效果和\1一樣。

例子二:

$string = 'abcd';

$re = preg_replace('/(a)/', '$1b',$string

);echo

$re;

//結果

//abbcd

二、轉義符

什麼是轉義符?

在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`了。

三、總結

1、php正則中的反引用,\1$1效果是一樣的,我們都可以拿來用。

2、php正則中的轉義符,當遇到多個`\`

的時候,我們可以先"去掉"乙個,然後,在去匹配。這樣就好理解啦。

深入理解 引用

引用簡介 引用就是某一變數 目標 的乙個別名,對引用的操作和對變數直接操作完全相同。引用的宣告方法 型別識別符號 引用名 目標變數名 例1 int a int ra a 定義引用ra,他是變數a的引用,即別名 說明 1 在此不是求位址運算,而是起標識作用。2 型別識別符號是指目標變數的型別。3 宣告...

深入理解( )左值引用和( )右值引用

左值是指既能出現在等號左邊也能出現在等號右邊的變數 或表示式 右值則只能出現在等號右邊 返回左值引用的函式,連同賦值 下標 解引用和前置遞增 遞減運算子,都是返回左值的表示式 返回非引用型別 右值引用的函式,連同算術 關係 位以及後置遞增 遞減運算子,都返回右值的表示式 左值持久,右值短暫,左值有持...

深入理解php的引用賦值

關於php引用的一般問題大家看資料就行了,這次我們來聊點有趣的東西。今天乙個朋友在群裡面問起來乙個關於變數引用賦值的問題,問題本身很簡單,我突然想做乙個實驗,來看看array直接賦值和引用賦值效能上的差別,寫完 發現另外乙個問題.請看 a array fill 0,1000000,10 functi...