歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Python 正則表達式

將《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.,”),姓氏沒有什麼限制,允許有多個單詞、橫線、大寫字母。

Copyright © Linux教程網 All Rights Reserved