正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
常用操作符
. 任意单个字符
[ ]字符集,对单个字符给出取值范围
[^ ]非字符集,对单个字符给出排除范围
*前一个字符0或无限次扩展
+前一个字符1次或无限次扩展
?前一个字符0或1次扩展
|左右表达式任意一个
{m}扩展前一个字符m次
{m,n}扩展前一个字符m至n次
^匹配字符串开头
$匹配字符串结尾
( )分组标记,内部只能用|操作
\d数字 等于【0-9】
\w 单词字符
正则可以包含一些可选标志修饰符来控制匹配的模式,多个用|来连接
re.l 使匹配对大小写不敏感 re.M 多行匹配
re库主要功能
re 模块的一般使用步骤如下:
使用 compile 函数将正则表达式的字符串形式编译为一个 Pattern 对象 通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果(一个 Match 对象) 最后使用 Match 对象提供的属性和方法获得信息,根据需要进行其他的操作。
compile() 函数
compile 函数用于编译正则表达式,生成一个 Pattern 对象,它的一般使用形式如下:
re.compile(pattern[, flag])
其中,pattern 是一个字符串形式的正则表达式,flag 是一个可选参数,表示匹配模式,比如忽略大小写,多行模式等。 从compile()函数的定义中,可以看出返回的是一个匹配对象,它单独使用就没有任何意义,需要和findall(), search(), match()搭配使用。
findall()函数
compile()与findall()一起使用,返回一个列表。
有两种写法 1. 先定义模式,用 re.findall(模式,内容)
import re
pat = re.compile("A")
m = re.findall(pat,"AasdasAaA")
print(m)
先定义模式,用 模式.findall(内容)
import re
pat = re.compile("A")
m = pat.findall("AasdasAaA")
print(m)
结果为:
可见返回为一个列表。
match()函数
compile()与match()一起使用,可返回一个class、str、tuple。但是一定需要注意match(),从位置0开始匹配,匹配不到会返回None,返回None的时候就没有span/group属性了; 例如: match(‘p’,’python’)返回值为真; match(‘p’,’www.python.org’)返回值为假。
用法同findall()
search()函数
re.search(pattern, string, flags=0)
compile()与search()搭配使用, 返回的类型与match()差不多, 但是不同的是search(), 可以不从位置0开始匹配。但是匹配一个单词之后,匹配和match()一样,匹配就会结束。
sub()函数
re.sub(pattern, repl, string, count=0, flags=0)
pattern:模式串 repl:需要替换成的字符串 string:需要被替换的字符串 count:替换次数
即在string中找到pattern用repl替换 *建议在正则中,被比较的字符串前面加上r,不用担心转义字符的问题