匹配单个字符

https://www.runoob.com/python/python-reg-expressions.html
https://www.jb51.net/article/264147.htm

.:匹配所有字符,除了换行符
[]:匹配括号中任意一个字符
[^]:匹配不在括号中的任意一个字符
\d:匹配一个数字字符
\D:匹配一个非数字字符
\s:匹配任何不可见字符(空格、制表符、换行符等)
\S:匹配任何可见字符
\w:匹配任何单词字符
\W:匹配任何非单词字符
^:匹配字符串的开头
$:匹配字符串的结尾

匹配多个字符

*:匹配前面的字符0次或多次
+:匹配前面的字符1次或多次
?:匹配前面的字符0次或1次
:匹配前面的字符恰好n次
{n,}:匹配前面的字符至少n次
{n,m}:匹配前面的字符至少n次,但不超过m次

匹配分组

():将括号中的内容作为一个分组
|:匹配多个模式中的任意一个,比如A|B表示匹配A或B

匹配转义字符

 \:转义字符

常用的RegEx函数

search    从字符串中进行搜索,成功则返回匹配目标,失败则返回None
match    从字符串开头进行匹配,成功则返回匹配目标,失败则返回None
fullmatch    匹配整个字符串
split    根据模式分割字符串
findall    查找字符串中所有非重叠匹配
finditer    类似于findall,但返回Python迭代器
sub    用提供的字符串替代匹配模式

常用示例

import re
result = re.findall(r'.', text)
result = re.findall( r'\d', text)


re.sub("world", "Python", sssss, flags=re.IGNORECASE) #忽略大小写

# 清理class
_html = re.sub(r'(\sclass=".*?")', '', _html)
# 清理style
_html = re.sub(r'(\sstyle=".*?")', '', _html, flags=re.IGNORECASE)
# 清理width
_html = re.sub(r'(\swidth="\d+")', '', _html, flags=re.IGNORECASE)
_html = re.sub(r'(\sheight="\d+")', '', _html, flags=re.IGNORECASE)

特殊说明

(.*) 第一个匹配分组,.* 代表匹配除换行符之外的所有字符。
(.*?) 第二个匹配分组,.*? 后面多个问号,代表非贪婪模式,也就是说只匹配符合条件的最少字符