將《Python核心編程》裡面的正則表達式分享:
《Python核心編程》第二版中文高清PDF下載 http://www.linuxidc.com/Linux/2012-05/59603.htm
1、用管道符號( | )匹配多個正則表達式模式
2、匹配任意一個單個的字符( . )
正表達式模式 匹配的字符串
f.o 在"f"和"o"中間的任何字符,如fao, f9o, f#o 等
.. 任意兩個字符
.end 匹配在字符串end 前面的任意一個字符
3、從字符串的開頭或結尾或單詞邊界開始匹配( ^/$ /\b /\B )
正則表達式模式 匹配的字符串
^From 匹配任何以From 開始的字符串
/bin/tcsh$ 匹配任何以 /bin/tcsh 結束的字符串
^Subject: hi$ 匹配僅由 Subject: hi 組成的字符串
RE Pattern Strings Matched
the 任何包含有"the"的字符串
\bthe 任何以"the"開始的字符串
\bthe\b 僅匹配單詞 “the”
\Bthe 任意包含“the”但不以“the”開頭的單詞
4、創建字符類( [ ] )
正則表達式模式 匹配的字符串
b[aeiu]t bat, bet, bit, but
[cr][23][dp][o2] 一個包含4 個字符的字符串: 第一個字符是 “r” 或 “c”,後面是 “2”
或 “3”,再接下來是 “d” 或 “p”,最後是 “o” 或 “2“ ,例
如:c2do, r3p2, r2d2, c3po, 等等。
5、指定范圍 ( - ) 和 否定( ^ )
正則表達式模式 匹配的字符
z.[0-9] 字符"z",後面跟任意一個字符,然後是一個十進制數字
[r-u][env-y][us] “r” “s,” “t” 或 “u” 中的任意一個字符,後面跟的是 “e,”
“n,” “v,” “w,” “x,” 或 “y”中的任意一個字符,再後面
是字符“u” 或 “s”.
[^aeiou] 一個非元音字符 (練習: 為什麼我們說”非元音“, 而不說”輔
音字母“?)
[^\t\n] 除TAB 制表符和換行符以外的任意一個字符
["-a] 在使用ASCII 字符集的系統中,順序值在‘"‘ 和 “a”之間 的
任意一個字符,即,順序號在34 和97 之間的某一個字符。
6、使用閉包操作符 ( *, +, ?, {} ) 實現多次出現/重復匹配
RE Pattern Strings Matched
[dn]ot? 字符"d"或"o", 後面是一個"o", 最後是最多一個字符"t",即,do, no, dot,
not
0?[1-9] 從1 到9 中的任意一位數字,前面可能還有一個"0". 例如:可以把它看
成一月到九月的數字表示形式,不管是一位數字還是兩位數字的表示形式。
[0-9]{15,16} 15 或16 位數字表示,例如:信用卡號碼
</?[^>]+> 匹配所有合法(和無效的)HTML 標簽的字符串
[KQRBNP][a-h][1-8]-[a-h][1-8] 在“長代數”記譜法中,表示的國際象棋合法的棋盤。即, “K,” “Q,” “R,” “B,” “N,” 或 “P” 等
字母後面加上兩個用連字符連在一起的"a1"到"h8"之間的棋盤坐標。前面的編號表示從哪裡開始走棋,後面的
編號代表走到哪個位置(棋格)去。
7、特殊字符表示字符集
正則表達式模式 匹配的字符串
\w+-\d+ 一個由字母或數字組成的字符串,和至少一個數字,兩部分中間由連字符連接
[A-Za-z]\w* 第一個字符是字母,其余字符(如果存在的話),是字母或數字(它幾乎等價於Python 語言中合法的標識符[見參考練習])
\d{3}-\d{3}-\d{4} (美國)電話號碼,前面帶區號前綴,例如 800-555-1212
\w+@\w+\.com 簡單的[email protected] 格式的電子郵件地址
8、用圓括號(()) 組建組
正則表達式模式 匹配的字符串
\d+(\.\d*)? 表示簡單的浮點數,即, 任意個十進制數字,後面跟一個可選的小
數點,然後再接零或多個十進制數字。例如:“0.004,” “2,” “75.”,等等。
(Mr?s?\. )?[A-Z][a-z]* [ A-Za-z-]+ 名字和姓氏,對名字的限制(首字母大寫,其它字母(如果存在)小寫), 全名前有可選的稱謂(“Mr.,”
“Mrs.,” “Ms.,” 或 “M.,”),姓氏沒有什麼限制,允許有多個單詞、橫線、大寫字母。