正则表达式
1 Python 正则表达式
1.1 re.match:匹配成功re.match方法返回一个匹配的对象,否则返回None
import re
re.match(pattern, string, flags=0)
# pattern 匹配的正则表达式
# string 要匹配的字符串。
# flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。多个标志可以通过按位或(|) 它们来指定。如 re.I | re.M
1.2 正则表达式修饰符 - 可选标志flags

1.3 re.search:扫描整个字符串并返回第一个成功的匹配。匹配成功re.search方法返回一个匹配的对象,否则返回None
import re
re.search(pattern, string, flags=0)
1.4 检索和替换:re.sub用于替换字符串中的匹配项。
import re
re.sub(pattern, repl, string, count=0, flags=0)
# pattern : 正则中的模式字符串。
# repl : 替换的字符串。也可为一个函数,对匹配的结果进行操作。
# string : 要被查找替换的原始字符串。
# count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
1.5 re.compile:用于编译正则表达式,生成一个正则表达式( Pattern )对象
import re
re.compile(pattern[, flags])
# pattern : 一个字符串形式的正则表达式
# flags : 可选,表示匹配模式,比如忽略大小写,多行模式等
1.6 findall:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
import re
re.findall(string[, pos[, endpos]])
# string : 待匹配的字符串。
# pos : 可选参数,指定字符串的起始位置,默认为 0。
# endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。
1.7 re.finditer:在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回
import re
re.finditer(pattern, string, flags=0)
# pattern 匹配的正则表达式
# string 要匹配的字符串。
# flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
1.8 re.split:按照能够匹配的子串将字符串分割后返回列表
import re
re.split(pattern, string[, maxsplit=0, flags=0])
# pattern 匹配的正则表达式
# string 要匹配的字符串。
# maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
# flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
1.9 正则表达式模式

2 常用正则表达式汇总
在网络爬虫中使用时,根据实际需要修改。
# 匹配中文字符
[\u4e00-\u9fa5]+
# 匹配双字节字符(包括汉字在内)
[^\x00-\xff]+
# 匹配 email 地址
[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
# 匹配url网址
[a-zA-z]+://[^\s]*
# 匹配中国邮政编码
[1-9]\d{5}(?!\d)
# 匹配日期2022-02-02
([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])))
# 匹配身份证号码
(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)
# 匹配正整数
[1-9]\d*
# 匹配负整数
-[1-9]\d*
# 匹配整数
-?[1-9]\d*
# 匹配非负整数
[1-9]\d*|0
# 匹配非正整数
-[1-9]\d*|0
# 匹配正浮点数
[1-9]\d*\.\d*|0\.\d*[1-9]\d*
# 匹配负浮点数
-[1-9]\d*\.\d*|-0\.\d*[1-9]\d*