正規表示式筆記

2022-05-03 23:54:09 字數 1035 閱讀 1487

正規表示式要注意的問題

所謂正規表示式匹配,匹配的是字元(或者是邊界),你可能認為this匹配的是this這個單詞,有些情況下可以這麼理解,但是更為正確的理解是:先匹配t這個字元,接下來匹配h字元,i字元,s字元,請一定要以字元的思維來思考正規表示式而不是以字串來思考正則。

對字元組(也就是在[...]裡)的字元來,許多的元字元是沒有意義的,例如.*?+等字元,在[.*?+]意義為匹配.*?+中的任何乙個字元。

在字元組中號,代表範圍,當且僅當 – 號不在第乙個位置上,例如:/[-]/代表匹配 – 字元,而[1-9]代表匹配從一到九的字元中的任何乙個字元,這裡則表示範圍。

盡量不要用 .*,注意只是盡量,因為 .* 代表匹配任意字元,常常用 .* 得不到你想要的匹配結果。例如匹配括號的正規表示式/ \(.*\)/來匹配(a)沒有問題

但是如果是((a)bc)就不行了,因為上述表示式也匹配((a),所以這是不正確的。

因為正規表示式是字元匹配,而空格也是乙個字元,所以字元匹配的時候,不能忽略空格的情況。 例如/[a b]/,你可能認為匹配a字元或者b字元,其實還應該包含乙個空格字元。

關於邊界的匹配,最為熟悉的邊界有^$(注:這兩個字元也只是在開頭和結尾是元字元)分別帶表字元的開頭和結尾,還有乙個比較常用的匹配字的邊界,也就是/b。例如我們要匹配the這三個連續的字元,並且替換它。如果直接用/the/的話,那麼他也會替換these中the。如果不想這樣只要改寫成/\bthe\b/新增邊界就可以了。這裡特別強調一點:\b等匹配邊界的正則串,實際不匹配任何字元(包括空格)。例如/^$/實際不匹配任何字元。

這些天看《精通正規表示式》一書,感覺正則真的很好,很強大。做個筆記以備忘。

注:正規表示式用兩個雙斜線括起來,字型為黑體

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

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