正規表示式學習筆記

2021-10-02 16:38:24 字數 3108 閱讀 7239

參考:

目錄

匹配規則介紹

貪婪與非貪婪  (?非貪婪)

後向引用: () 圓括號表示

預查: 前瞻、回顧法 (或正向、反向預查)

正則入手記憶點:找誰?怎麼找?找幾個?

字元邊界(定位符)主要有:

^ 匹配字串的開始,在中表示式的為的意思,如[^0-9]非數字

$ 匹配字串的結尾

\b 匹配單詞的開始和結尾(邊界)

\b 匹配單詞的非邊界

常見字元簇(或元字元):

字元描述

.(點)

任意字元,不含換行

\w[a-z a-z 0-9_]

\w\w 的補集

\s空白符,包括 \n\r\t\v 等

\s非空白符

\d[0-9]

\d非數字

匹配幾次(找幾個):

字元描述

*匹配前面的子表示式零次或多次。 如/.*/匹配所有內容。

+匹配前面的子表示式一次或多次。  如 /\d+/  多個數字

?匹配前面的子表示式零次或一次。

n 是乙個非負整數。精確女匹配確定的 n 次。

m 和 n 均為非負整數,其中n <= m,最少匹配 n 次且最多匹配 m 次。

n 是乙個非負整數。至少匹配n 次。如  /[a-z]/ 匹配5個以上的字母的內容

要匹配. ^ $ ( ) ?\  |  [ 等特殊字元本身,需要加\進行轉義。

1、單詞匹配: /\bhi\b/,只識別hi單詞, hill這種是匹配不到的;/\bhi\b/ 匹配包含hi在內部的單詞,無法匹配hi單詞。

2、集合:/^[01235689]$/ ,匹配指定數字集合開頭,且11位數字的內容,即手機號。

/^[^47]$/ , 匹配47開頭的11位數字的內容。

3、字元範圍:/\b[a-za-z]\b/ , 匹配只包含乙個以上字母的單詞,有數字的不行。

4、字元簇:  /\s/      \s為空白符,包含 \n\r\t\v 等

5、或者的表示: 用 | 。/\b[a-za-z]+\b|\b[0-9]+\b/   匹配純字元或純數字

6、不區分大小寫:/\b[a-z]+\b/i,最後加個i表示不區分大小寫。

7、單行模式:/.+/s,即忽略語句中的回車符,不管原文內容是否中間包含回車換行,都視為一行去匹配。

8、匹配中文:/^[\x-\x]+$/u,固定寫法。這是ascii碼中文範圍。

正規表示式預設是貪婪匹配。

$str = 'ksda good goooood good kl s ja dfs dk '

$patt = '/g.+d/'; // 預設貪婪模式(盡量多地匹配)

$patt = '/g.+?d/'; //在數量(+ * )限定符後加 ? ,則為非貪婪模式

查詢首尾字母一樣的單詞:/\b([a-z])\w+\1\b/   ,\1表示 引用前面圓括號()匹配到的內容。 當乙個表示式中存在多個圓括號時,從左到右的順序分別對應1 2 ...,當想用引用第3個括號的內容,即\3表示即可。

$str = '13800138000 , 13426060134 ';

$patt = '/(\d)\d(\d)/';

preg_match_all($patt, $str, $res);

print_r($res);

echo preg_replace($patt, '\1****\2', $str);    --把手機中間4位隱藏,引用第1和第2個括號內的內容

查詢單詞從左往右是正向,向右看,是前瞻;向左看,是回顧。

字元描述

(?=ing)

正向肯定預查

(?!ing)

正向否定預查

(?<=ing)

反向肯定預查

(?反向否定預查

正向預查:前瞻

//把ing結尾的詞根(非ing部分)找出來

$str = 'hello ,when i am working , don not coming';

$patt = '/\b\w+(?=ing\b)/';       

游標從左到右,當走到work與i中間時,不再走,向前看,**繼續往右走的話是不是ing,而ing是作為結尾的。這種找法體現前瞻性,正**(是什麼樣的,負**--不是什麼樣的,否定。)

$patt = '/\b\w+(?!ing)\w\b/';     --把不是ing結尾的詞根找出來,負**。這是游標需要繼續走完ing。

反向預查:回顧

//把un開頭的詞根找出來

=\bun)\w+\b/';

游標走到un和lucky中間,不再走,往左回顧,判斷是否為un,正**。

$patt = '/\b\w(?<!un)\w*\b/';     --把非un開頭的單詞找出來,負**。

正規表示式學習筆記

正規表示式學習日記 1 為萬用字元,表示任何乙個字元,例如 a.c 可以匹配 anc abc acc 2 在內可以指定要求匹配的字元,例如 a nbc c 可以匹配 anc abc acc 但不可以匹配 ancc a到z可以寫成 a z 0到9可以寫成 0 9 3 數量限定符號,表示匹配次數 或者叫...

正規表示式學習筆記

字元描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

正規表示式學習筆記

1.正規表示式是可用於在乙個檔案或字元裡查詢和替代文字的一種標準。它具有兩種標準 基本的正規表示式 bre 擴充套件的正規表示式 ere ere包括bre功能和另外其它的概念。2.表示或運算 3.匹配任何單個字元 4.匹配任何中包含的單個字元,如 張王李 三,匹配張 三 王三,李三 5.將排除 後跟...