python3 正则表达式
1.re.match函数
re.match
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()
就返回none
。
函数语法:re.match(pattern, string, flags=0)
flags
是标志位
懒惰匹配
表达式 .* 的意思很好理解,就是单个字符匹配任意次,即贪婪匹配。
表达式 .*? 是满足条件的情况只匹配一次,即懒惰匹配
图片.png
2.re.search方法
re.search
扫描整个字符串并返回第一个成功的匹配。
函数语法:re.search(pattern, string, flags=0)
re.match与re.search的区别
re.match
只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None
;而re.search
匹配整个字符串,直到找到一个匹配。
检索和替换
re.sub(pattern, repl, string, count=0)
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
compile 函数
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
函数语法:re.compile(pattern[, flags])
findall
*match
和 search
是匹配一次 ,findall
匹配所有
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
函数语法:findall(string[, pos[, endpos]])
string
待匹配的字符串。
pos
可选参数,指定字符串的起始位置,默认为0
。
endpos
可选参数,指定字符串的结束位置,默认为字符串的长度。
re.split
*注:正则表达式[\w]+,\w+,[\w+]
三者有何区别:
[\w]+
和\w+
没有区别,都是匹配数字和字母下划线的多个字符;
[\w+]
表示匹配数字、字母、下划线和加号本身字符;
函数语法:re.split(pattern, string[, maxsplit=0, flags=0])
pattern 匹配的正则表达式
string 要匹配的字符串。
maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等