簡單的匹配模式
匹配數字 d或[0-9]邊界匹配非數字 d或[^0-9]
選擇匹配 匹配0或1 [01]
匹配單詞 w 或者 [a-za-z0-9]
匹配非單詞 w 或者[^a-za-z0-9]
匹配8進製 o
匹配16進製制 x
匹配unicode值 u
匹配換行 n
匹配空字元 s 或者 [ tnr]
匹配非空字元 s
匹配5個字元 s
匹配非換行字元 .
匹配1個或0個 ?
匹配0個或多個 *
匹配1個或多個 +
否定是 ^
匹配開頭 脫字元 ^
匹配末尾 美元符號 $
行邊界 multiline模式下,將所有行視為乙個行 ^ $選擇分組和向後引用單詞邊界 btheb 單詞邊界 b 非單詞邊界 b
主題詞起始與終止位置 a匹配主題詞起始位置 z匹配終止位置
引用字串字面值邊界 ()用於引用字串
使用元字元的字面值 \q$\e則會匹配$
分組的選擇操作 (the|the|the)字元組忽略大小寫匹配為 (?i),所以上面可以改為 (?i)the
子模式(t|t)h(e|eir) 或[tt]h(e|eir)
子模式匹配單詞 b[tt]h[eir]*b 可以匹配單詞 thee或thee thrr
捕獲分組和向後引用 捕獲分組用(),向後引用用 1(引用第乙個分組) 2(引用第二個捕獲的分組)
命名分組 <?(name)…> 或者 (?name…) python裡面的分組命名(?p…) python裡面引用分組為(?p=name)
捕獲分組會將捕獲的字元放在記憶體當中,可以在程式中是此案呼叫。分組最多可以捕獲9個
非捕獲分組 是捕獲後不會放在記憶體中的分組
(the|the|the)
(?:the|the|the)
(?:(?i)the)
最推薦的寫法是(?i:the)
匹配乙個特定的字元,比如需要匹配母音字母[aeiouaeiou]匹配unicode字元匹配a-z [a-z]
匹配數字[0-9] 匹配大於4的數字[5-9]
匹配兩位數的偶數 b[1-9][02468]b
字元取反,匹配非母音字母[^aeiouaeiou]
並集與差集,並集匹配0-3或6-9的數 [0-3[6-9]]
差集,與集合的邏輯一樣,自然要用到否定了。匹配a-z之間,但m-r除外的字元[a-z[^m-r]]
x和x可以匹配的最大值255 ff貪心,懶惰和占有u可以匹配的最大值為65535 ffff
u可以匹配的最大是7fffffff
匹配控制字元 cx
>貪心量詞,盡力匹配最多。。比如 *
懶惰量詞 *? 加? 則量詞由貪心變成懶惰也就是 .* 和 .*?的區別
匹配的m-n次 a
懶惰 5可以匹配乙個55?也可以匹配乙個5
而5??則不能匹配5
5*可以匹配0個或多個5而5*?則不能匹配5
5+可以匹配乙個或多個5懶惰?讓表示式匹配最少的55+?則只能匹配乙個5
占有量詞環視占有量詞和貪心匹配一樣,盡可能多地選定更多的內容。與談心不同的是,她不會回溯,
.*+ 占有式匹配0次或多次
++ 匹配一次或多次
?+ 匹配零次或多次
+ 匹配n次
+ 匹配n次或更多次
+ 匹配m-n次
正前瞻 (?=name) 匹配name前面 比如 ruhuorutu(?=liujian)匹配liujian之前的ruhuorutu 比如ruhuorutuliujian。。。兩個詞一定要緊靠,不能有空格或者其他字元隔開
反前瞻 (?!name)
正後顧 (?<=name)
反後顧 (?用html標記文件
>匹配標籤 <[a-za-z][^>]*>
另外參考,三十分鐘學習正規表示式
categories:正規表示式
正規表示式學習筆記
正規表示式學習日記 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.將排除 後跟...