正則表達式學習筆記

一、正則表達式基本語法:####

*界定符
*原子
*元字符
*量詞
*邊界控制
*模式單元

1. 界定符######

<pre>
表示一個正則表達式的開始和結束。(如:/[0-9]/或#[0-9]#或{[0-9]})
一般使用/或#作為界定符,不建議用{}
</pre>

2. 原子######

<pre>
(1)可見原子:Unicode編碼表中用鍵盤輸出后肉眼可見的字符
如:標點;"_?.等,英文字母數字a-z A-Z 0-9,其他可見字符等
(2)不可見原子:Unicode編碼表中用鍵盤輸出后肉眼不可見的字符
如:換行符\n,回車\r,制表符\t,空格,其他不可見符號
</pre>

3. 元字符######

<pre>
(1)原子的篩選方式:
| 匹配兩個或者多個分支選擇;
[] 匹配方括號中的任意一個原子;
[^] 匹配除方括號中的原子之外的任意字符;

(2)原子的集合:
. 匹配除換行符之外的任意字符,即[^\n];
\d 匹配任意一個十進制數字,即[0-9];
\D 匹配任意一個非十進制數字,即[^0-9];
\s 匹配一個不可見原子,即[\f\n\r\t\v];
\S 匹配一個可見原子,即[^\f\n\r\t\v];
\w 匹配任意一個數字、字母或下劃線,即[0-9a-zA-Z_];
\W 匹配任意一個非數字、字母或下劃線,即[^0-9a-zA-Z_];
</pre>

4. 量詞######

<pre>
{n} 表示其前面的原子恰好出現n次;
{n,} 表示其前面的原子最少出現n次;
{n,m} 表示其前面的原子最少出現n次,最多出現m次;

  • 匹配0次、1次或者多次其之前的原子,即{0,};
  • 匹配1次或者多次其之前的原子,即{1,};
    ? 匹配0次或者1次其之前的原子,即{0,1};
    </pre>
5. 邊界控制######

<pre>
^ 匹配字符串開始的位置;
$ 匹配字符串結尾的位置;
</pre>

6. 模式單元######

<pre>
() 匹配其中的整體為一個原子;
</pre>

二、模式修正:####

1.懶惰匹配與貪婪匹配######

<pre>
(1) 貪婪匹配:匹配結果存在歧義時取其長(默認為貪婪模式)
(2) 懶惰匹配:匹配結果存在歧義時取其短(懶惰模式標識:U 即:只需要在正則表達式的末尾加上U 如:/so.+234/U)
</pre>

2.常見修正模式######

<pre>
U 懶惰匹配;
i 忽略英文字母大小寫;
x 忽略空白;
s 讓元字符'.'匹配包括換行符在內的所有字符;
e 配合函數preg_replace()使用,可以把匹配來的字符串當作正則表達式執行;
</pre>

三、PHP中常用的正則表達式函數:####

1. preg_match()與preg_match_all()######

<pre>
preg_match($pattern,$subject,[array &matches])
第三個參數是傳遞引用,參數可選;
preg_match()只會在$subject中匹配一次;
return 匹配的次數(0次或1次)
preg_match_all($pattern,$subject,array &matches)
第三個參數是傳遞引用,參數必填;
preg_match_all()會把$subject中所有符合的匹配出來;
return 匹配的次數(0次或多次)
</pre>

2. preg_replace()與preg_filter()######

<pre>
preg_replace($pattern,$replacement,$subject)
return 返回被替換后的結果,(當為數組集時:不管替換部分和沒有替換部分都會返回);
preg_filter($pattern,$replacement,$subject)
return 返回替換后的結果,(當為數組集時:只保留被替換過的,沒有替換的部分不返回;)
</pre>

3. preg_grep()######

<pre>
preg_grep($pattern,array $input)
return 只返回被匹配到的結果集,沒有匹配到的就過濾掉不返回
</pre>

4. preg_split()######

<pre>
preg_split($pattern,$subject)
return 用匹配到的結果去截取字符串,將截取后的結果返回;
</pre>

5. preg_quote()######

<pre>
preg_quote($str)
正則運算符轉義,如: .\+*?[^]$(){}=!<>|:-
</pre>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 正則表達式練習題點擊這里 創建一個正則表達式 使用一個正則表達式字面量,其由包含在斜杠之間的模式組成,如下所示: ...
    打鐵大師閱讀 1,291評論 0 6
  • 一.正則表達式匹配原則 占有字符和零寬度 在正則表達式匹配過程中,如果子表達式匹配到的是字符內容,并被保存在結果之...
    Coree閱讀 564評論 0 0
  • 什么是正則表達式 Regular Expression使用單個字符串來描述,匹配一系列符合某個句法規則的字符串 說...
    打鐵大師閱讀 795評論 1 6
  • 正則表達式的語法不再多說 正則RegExp類型有幾個常用方法: exec() 該方法是專門為捕獲組而設計的。 例:...
    燈不梨喵閱讀 432評論 0 0
  • 最近開始轉學php。語法已經學的差不多,但是感覺感覺php中好多東西還是靈活,還是需要項目的歷練。回歸主題,本來對...
    Big丶Show閱讀 428評論 0 0