正規表示式的筆記

2022-04-30 21:57:22 字數 819 閱讀 3115

正規表示式的開發一定要使用工具(除非特別簡單的),推薦regexbuilder.

最難以理解的是零寬斷言和組,其中捕獲組說明如下

(?'group')

把捕獲的內容命名為group,並壓入堆疊(stack)

(?'-group')

從堆疊上彈出最後壓入堆疊的名為group的捕獲內容,如果堆疊本來為空,則本分組的匹配失敗

(?(group)yes|no)

如果堆疊上存在以名為group的捕獲內容的話,繼續匹配yes部分的表示式,否則繼續匹配no部分

(?!)

零寬負向先行斷言,由於沒有字尾表示式,試圖匹配總是失敗

3.   正規表示式的本身,是(位置+長度)的匹配,而且匹配的部分,要滿足正規表示式位置的連續。而零寬斷言中的

(?=exp)

匹配exp前面的位置

(?<=exp)

匹配exp後面的位置

都是匹配位置。

4.經過艱苦的思考,發現(?<=exp)的exp部分是從右向左匹配字串的。

比如,下面的正規表示式,因為(?(t)(?'f'')|(?'x'"))* 先執行,會給x的組加上匹配,這樣會導致(?(x)()|()),只會執行紅色的部分。

(?<=^[^'"]*

(?(x)()|())

[^'"]*

(?(t)(?'f'')|(?'x'"))*

[^'"]*)1

5.  《的都應該出現在前面,比如

(?匹配前面不是exp的位置

(?<=exp)

匹配exp後面的位置

正規表示式 正規表示式函式 筆記

筆記直接使用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 匹...