1、compile函数
使用re.compile可以将正则表达式的字符串形式编译为一个Pattern对象,通过Pattern对象提供的一系列方法对文本进行匹配查找,re.compile单独使用没有任何意义,需要和findall(),search(),match()等搭配使用。比如:
2、findall函数
findall()可以返回文本中所有与Pattern匹配的字符,返回形式为数组。
findall可以有两种方式使用:
re.findall(pattern,text)#pattern为re.compile编写的pattern对象,text为要进行匹配的文本
pattern.findall(text)#text为要进行匹配的文本
当匹配不到文本时返回空列表。
3、match函数search函数
match()个人觉得比较废,我基本不会用,他的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None。(如果开头第一个字符匹配不到,那直接就返回None了。。)
search()与match()类似,唯一的区别就是search可以不从位置0开始匹配
re.match和re.search匹配成功之后,都是返回一个Object对象,提供了以下的方法:
- group()返回匹配的字符串
- start()返回匹配开始的位置
- end()返回匹配结束的位置
- span()返回一个元组,包含匹配(开始,结束)的位置
4、sub函数
re.sub()用于替换文本中需要替换掉的词语,返回替换后的文本,sub有两种使用方式:
pattern.sub(替代后的词语,text)
re.sub(pattern,替代后的词语,text)
5、split函数
split能够按照所能匹配的字串将字符串进行切分,返回切分后的字符串列表,split也是有两种使用方式:
pattern.split(text)
re.split(pattern,text)
表达式字符含义:
与多种字符匹配的表达式
/d任意一个数字,0~9之中的任意一个数字,/D匹配所有非数字字符
/w任意一个字母或数字或下划线,也可以是中文,/W匹配所有非数字字符下划线的字符
/s包括空格、制表符、换页符等空白字符的其中任意一个,/S匹配所有非空白字符
.小数点可以匹配除了换行符(/n)以外的任意一个字符
匹配多种字符的表达式
[aA1@]匹配"a"或"A"或"1"或"@"
[^abc]匹配"a","b","c"之外的任意一个字符
[f-k]匹配"f"~"k"之间的任意一个字母
[^A-C0-3]匹配"A"~"C","0"~"3"之外的任意一个字符
修饰匹配次数的符号
{n}表达式重复n次,比如:"/w{2}"相当于"/w/w";"a{5}"相当于"aaaaa"
{x,y}表达式至少重复m次,最多重复n次,比如:"ab{1,3}"可以匹配"ab"或"abb"或"abbb"
{m,}表达式至少重复m次,比如:"/w/d{2,}"可以匹配"a12","_456","M12344"...
?匹配表达式0次或者1次,相当于{0,1}
''表达式至少出现1次,相当于{1,}.
*表达式不出现或出现任意次,相当于{0,}
特殊符号
^与字符串开始的地方匹配,不匹配任何字符
$与字符串结束的地方匹配,不匹配任何字符
/b匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符,/B匹配非单词边界
|表示"或"关系,a|b表示a或者b
()在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰;取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
其他:
在线正则表达式测试网站:https://regex101.com/
匹配中文:re.compile(r"[\u4e00-\u9fa5]")