表1.常用的元字元
**說明
.匹配除換行符以外的任意字元
\w匹配字母或數字或下劃線或漢字
\s匹配任意的空白符
\d匹配數字
\b匹配單詞的開始或結束
^匹配字串的開始
$匹配字串的結束
表2.常用的限定符
**/語法說明*
重複零次或更多次
+重複一次或更多次
?重複零次或一次
重複n次
重複n次或更多次
重複n到m次
表3.常用的反義**
**/語法
說明\w
匹配任意不是字母,數字,下劃線,漢字的字元
\s匹配任意不是空白符的字元
\d匹配任意非數字的字元
\b匹配不是單詞開頭或結束的位置
[^x]
匹配除了x以外的任意字元
[^aeiou]
匹配除了aeiou這幾個字母以外的任意字元
表5.懶惰限定符
**/語法
說明*?
重複任意次,但盡可能少重複
+?重複1次或更多次,但盡可能少重複
??重複0次或1次,但盡可能少重複
?重複n到m次,但盡可能少重複
?重複n次以上,但盡可能少重複
表6.常用的處理選項
名稱說明
ignorecase(忽略大小寫)
匹配時不區分大小寫。
multiline(多行模式)
更改^和$的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字串的開頭和結尾匹配。(在此模式下,$的精確含意是:匹配\n之前的位置以及字串結束前的位置.)
singleline(單行模式)
更改.的含義,使它與每乙個字元匹配(包括換行符\n)。
ignorepatternwhitespace(忽略空白)
忽略表示式中的非轉義空白並啟用由#標記的注釋。
explicitcapture(顯式捕獲)
僅捕獲已被顯式命名的組。
表7.尚未詳細討論的語法
**/語法
說明\a
報警字元(列印它的效果是電腦嘀一聲)
\b通常是單詞分界位置,但如果在字元類裡使用代表退格
\t製表符,tab
\r回車
\v豎向製表符
\f換頁符
\n換行符
\eescape
\0nn
ascii**中八進位制**為nn的字元
\xnn
ascii**中十六進製制**為nn的字元
\unnnn
unicode**中十六進製制**為nnnn的字元
\cnascii控制字元。比如\cc代表ctrl+c
\a字串開頭(類似^,但不受處理多行選項的影響)
\z字串結尾或行尾(不受處理多行選項的影響)
\z字串結尾(類似$,但不受處理多行選項的影響)
\g當前搜尋的開頭
\punicode中命名為name的字元類,例如\p
(?>exp)
貪婪子表示式
(?-exp)
平衡組(?im-nsx:exp)
在子表示式exp中改變處理選項
(?im-nsx)
為表示式後面的部分改變處理選項
(?(exp)yes|no)
把exp當作零寬正向先行斷言,如果在這個位置能匹配,使用yes作為此組的表示式;否則使用no
(?(exp)yes)
同上,只是使用空表示式作為no
(?(name)yes|no)
如果命名為name的組捕獲到了內容,使用yes作為表示式;否則使用no
(?(name)yes)
同上,只是使用空表示式作為no
摘自:
正規表示式 正規表示式函式 筆記
筆記直接使用pycharm製作,需要原始檔請私聊。正規表示式函式 1.match 2.search 3.全域性匹配函式 全域性匹配 re.compile 正規表示式 findall 資料 import re string poythonydasadcasa pat2 p.y 懶惰模式執行 較精準 r...
正規表示式筆記
不同的語系編碼的順序不一樣 lang c 0 1 2 3 a b c d z a b c d z lang zh cn 0 1 2 3 4 a a b b c c z z 使用正規表示式時,需要留意環境的語系是什麼,否則會有不同的結果 alnum 英文大小寫字元及數字 0 9 a z a z alp...
正規表示式筆記
d 0 9中的任意乙個數字 w a z,a z,0 9,中的任意乙個,即字母數字下劃線 s 空格,製表符,換頁符等空白字元的其中任意乙個 小數點可以匹配換行符 n 以外的任意乙個字元 匹配某範圍內的任意乙個字元 ab9 匹配 a b 9 中的任意乙個 abc 匹配abc之外的任意乙個字元 a g 匹...