正则表达式:通过寻找模式匹配文本的工具
r开头引起的字符串就是声明了后面引号里的东西是原始字符串,在里面放任何字符都表示该字符的原始含义。
re.search接受一个字符串和一个正则表达式,返回第一个发现的匹配,没有则返回None:
re.match:接受一个字符串和一个正则表达式,仅仅从字符串第一个开始匹配。
当想匹配字符串时,最好使用re.search
多个匹配
re.findall:返回一个列表
re.finditer:返回一个生成器
注意:没有实际返回一个match对象,而是根据正则表达式的内容以字符串或元组的形式返回匹配自身
字符组
使用方括号列出所有可能的的字符从而表示一个字符组
注意:字符组仅仅匹配一个字符
区间
在字符组中使用-连接字符代表区间([a-z]表示只匹配小写字符)
取反(^)
反转字符组(即:只匹配除指定字符之外的其他字符)
快捷方式
\d:匹配数字字符
\w:与任意单词字符匹配
\s:匹配空白字符
\b:匹配一个长度为0 的子串,在一个单词的结尾或者开始匹配。
^:字符的开始
.:代表单个的任意字符,只能出现在方括号字符组之外
可选字符
?:指定一个字符、字符组,该字符可以出现零次或者一次
{N}:指定一个标记必须重复给定次数
{M,N}:M是下界,N是上界(边界时包含性的)
{M,N}?:尽可能少的返回匹配(?本质上时{0,1}的别名)
{1,}:指定出现一次或者多次
{,}:下界假定为0
+:一个或者多个
*:0个或者多个
分组(可使用圆括号指定分组)
group:返回完整的匹配
groups:返回单个分组的元组(分组编号从1开始)
命名分组
语法(?P<第一个分组名>[\d]{3})-(?P<第二个分组名>[\d]{4})
groupdict方法:返回一个字典,键对应分组名称
先行断言
先行断言:基于之后的内容是否存在接受或拒绝一个匹配,而不需要接下来的内容作为匹配的一部分
取反先行断言的语法:n(?!e)
取反先行断言仅仅返回字符n
正向先行断言语法:n(?=e)
标记
re.IGNORECASE:不区分大小写
re.UNICODE:强制正则表达式遵照python3的行为
re.ASCII:强制正则表达式遵照python2的行为
re.DOTALL:除了匹配其他字符之外,还匹配换行符(贪心)
re.MULTILINE:使”^“和“$”可以匹配任意行的开始和结束
可以使用|操作符来使用多个标记
替换
re.sub(正则表达式,用于替换的字符串,被搜索的原始字符串)
已编译的正则表达式
re.compile返回一个正则表达式的对象,该对象的正则表达式以数据形式存在,可被复用,这些对象都有自己的search和sub方法,
python正则表达式
最新推荐文章于 2025-09-08 17:11:31 发布
