一、常用的匹配規則總結表
模式 | 描述 | |
---|---|---|
\w | 匹配字母數字及下劃線 | |
\W | 匹配非字母數字及下劃線 | |
\s | 匹配任意空白字符,等價于 [\t\n\r\f]. | |
\S | 匹配任意非空字符 | |
\d | 匹配任意數字,等價于 [0-9] | |
\D | 匹配任意非數字 | |
\A | 匹配字符串開始 | |
\Z | 匹配字符串結束,如果是存在換行,只匹配到換行前的結束字符串 | |
\z | 匹配字符串結束 | |
\G | 匹配最后匹配完成的位置 | |
\n | 匹配一個換行符 | |
\t | 匹配一個制表符 | |
^ | 匹配字符串的開頭 | |
$ | 匹配字符串的末尾 | |
. | 匹配任意字符,除了換行符 | |
[...] | 用來表示一組字符,單獨列出:[amk] 匹配 'a','m' 或 'k' | |
[^...] | 不在 [] 中的字符:[^abc]匹配除了 a,b,c 之外的字符。 | |
* | 匹配 0 個或多個的表達式。 | |
+ | 匹配 1 個或多個的表達式。 | |
? | 匹配 0 個或 1 個由前面的正則表達式定義的片段,非貪婪方式 | |
{n} | 精確匹配 n 個前面表達式。 | |
{n, m} | 匹配 n 到 m 次由前面的正則表達式定義的片段,貪婪方式 | |
a | b | 匹配 a 或 b |
( ) | 匹配括號內的表達式,也表示一個組 |
相關具體應用例子,請見:
Python-正則表達式
二、re庫中常用方法
函數 | 描述 |
---|---|
re.match(pattern, string, flags=0) | 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none |
re.search(pattern, string, flags=0) | 掃描整個字符串并返回第一個成功的匹配 |
re.sub(pattern, repl, string, count=0) | 用于替換字符串中的匹配項,repl : 替換的字符串,也可為一個函數 |
re.compile(pattern[, flags]) | 用于編譯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用 |
findall(string[, pos[, endpos]]) | 在字符串中找到正則表達式所匹配的所有子串,并返回一個列表,如果沒有找到匹配的,則返回空列表 |
re.split(pattern, string[, maxsplit=0, flags=0]) | 能夠匹配的子串將字符串分割后返回列表 |
相關具體應用例子,請見:Python-正則表達式
三、修飾符總結
修飾符 | 描述 |
---|---|
re.I | 使匹配對大小寫不敏感 |
re.L | 做本地化識別(locale-aware)匹配 |
re.M | 多行匹配,影響 ^ 和 $ |
re.S | 使 . 匹配包括換行在內的所有字符 |
re.U | 根據Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B. |
re.X | 該標志通過給予你更靈活的格式以便你將正則表達式寫得更易于理解。 |
取值可以使用按位或運算符'|'表示同時生效,比如re.I | re.M。
四、常用正則表達式
1、匹配email地址:
[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
2、匹配網址URL:
[a-zA-z]+://[^\s]*
3、匹配18位身份證號:
^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
4、匹配年月日格式:
([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))
5、匹配整數:
^-?[1-9]\d*$
6、匹配正整數:
^[1-9]\d*$
7、匹配負整數:
^-[1-9]\d*$
8、匹配空白行:
\n\s*\r