python學習筆記:正規表達式
用标準化代碼(正規表達式)比對字元串
一般
正規表達式 | 字元串 |
---|---|
\d | 數字 |
\w | 數字或字母 |
\s | 空格或tab等空白符 |
. | 單個任意字元 |
* | 任意個字元 (含零個) |
+ | 至少一個字元 |
? | 零或一個字元 |
{n} | n個字元 |
{m,n} | m到n個字元 |
進階
正規表達式 | 字元串 |
---|---|
[0-9a-zA-Z\ _] | 一個數字字母下劃線組成的字元串 |
[a-zA-Z\ _] [0-9a-zA-Z\ _] * | 首位不是數字的(如上的)字元串 |
a|b | a或者b |
^ | 行首 |
$ | 行尾 |
說明:沒有^ 和$的時候,可以用字元串的一部分比對整體
使用
在字元串前添加字首r,例如r’a\b’,避免\被用于轉義
import re
re.match(正規表達式,字元串)
成功傳回一個match對象,失敗傳回none
re.split(r’[\s\,]+’ , ‘a,b, c d’)
傳回 [‘a’ , ‘b’ , ‘c’ , ‘d’]
分組
m = re.match(r’^(\d{3})-(\d{3,8})$’, ‘010-12345’)
m.group(0)為‘010-12345’
m.group(1)為‘010’
m.group(2)為‘12345’
貪婪比對
\d+會盡可能的多比對字元
\d+?會根據後文盡可能少比對
預編譯
re_telephone=re.compile(r’^(\d{3})-(\d{3,8})$’)
re_telephone.match(‘010-12345’).groups()
輸出(‘010’, ‘12345’)