- 字符:
. 匹配除換行符以外的任意字符
\ 轉義字符,使後一個字符改變原來的意思
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束
- 次數:
* 重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
{n} 重複n次
{n,} 重複n次或更多次
{n,m} 重複n到m次
[] 字符集
() 分組
| 或
match
- match,從起始位置開始匹配,匹配成功返回一個對象,未匹配成功返回None
match(pattern, string, flags=0)
# pattern: 正則模型
# string : 要匹配的字符串
# falgs : 匹配模式
- flags有:
re.S(DOTALL) - 使.匹配包括換行在內的所有字符
re.I(IGNORECASE) - 使匹配對大小寫不敏感
re.L(LOCALE) - 做本地化識別(locale-aware)匹配,法語等
re.M(MULTILINE) - 多行匹配,影響^和$
re.X(VERBOSE) - 該標誌通過給予更靈活的格式以便將正則表達式寫得更易於理解
re.U - 根據Unicode字符集解析字符,這個標誌影響\w,\W,\b,\B
origin = "hello world Perform case-insensitive matching66."
r = re.match("h\w+", origin)
print(r.group()) # 獲取匹配到的所有結果
print(r.groups()) # 獲取模型中匹配到的分組結果
print(r.groupdict()) # 獲取模型中匹配到的分組結果
>>> hello
>>> ()
>>> {}
- search
- search,瀏覽整個字符串去匹配第一個,未匹配成功返回None
- re.match 與 re.search 的區別:
re.match 只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;
re.search 匹配整個字符串,直到找到一個匹配。
- findall
- re.findall遍歷匹配,可以獲取字符串中所有匹配的字符串,返回一個列表。
r = re.findall('h(\w+)', origin)
print(r)
>>> ['ello', 'ing9999']
常用的20個表達式 :點我