re模块使python语言拥有全部的正则表达式功能,本篇主要介绍python中re模块常用的函数使用方法 search()函数 search()函数浏览全部字符串,匹配第一个符合规则的字符串,未匹配则返回None 语法: search(pattern,string,flags=0) #pattern:要匹配的正则表达式 #string:要匹配的字符串 #falgs:匹配模式,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等 例如 import re a = ‘one1two2three3’ infos = re.search(’\d+’,a) print(infos) 运行结果: 可以看出,search()函数返回的是正则表达式对象,通过正则表达式匹配到了‘1’这个字符串 取出匹配对象方法: group():获取匹配到的所有结果,不管有没有分组将匹配到的全部拿出来,有参数为匹配到的第几个如2 groups():获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分的结果 groupdict():获取模型中匹配到的分组结果,只拿出匹配到的字符串中分组部分定义了key的组结果,?P<>定义组里匹配内容的key(键)
可以通过下面的代码返回匹配的字符: import re a = ‘one1two2three3’ infos = re.search(’\d+’,a) print(infos.group()) 运行结果: match()函数 match()函数,从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None 格式: match(pattern,string,flags=0) #pattern:要匹配的正则表达式 #string:要匹配的字符串 #falgs:匹配模式,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等 注意:match()函数 与 search()函数基本是一样的功能,不一样的就是match()匹配字符串开始位置的一个符合规则的字符串,search()是在字符串全局匹配第一个合规则的字符串
findall()函数 findall()函数匹配所有符合规律的内容,并以列表形式返回结果。例如前例中 ‘one1two2three3’,通过search()函数只能匹配到第一个符合规律的结果,而通过findall()函数可以返回字符串所有的数字。 import re a = ‘one1two2three3’ infos = re.findall(’\d+’,a) print(infos) 运行结果: sub()函数 sub()函数用于替换字符串中的匹配项 语法如下 re.sub(pattern,repl,string,count=0,flags=0) #pattern为匹配的正则表达式 #repl为替换的字符串 #string为要被查找替换的原始字符串 #count为模式匹配后替换的最大次数 #flags为标志位,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等 例如: import re phone = ‘137-2345-3245’ new_phone = re.sub(’\D’,’’,phone) print(new_phone) 运行结果: sub()函数的用途类似于字符串中的replace()函数但sub()函数更加灵活,可以通过正则表达式来匹配需要替换的字符串,而replace()函数不能做到
split()函数 根据正则匹配分割字符串,返回分割后的一个列表 split(pattern,string,maxsplit=0,flags=0) #pattern 匹配的正则表达式 #string 要匹配的字符串 #maxsplit 指定分割个数 #flags 标志位,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等 例如:按照一个字符将全部字符串进行分割 import re phone = ‘hello alex bcd alex lge alex acd 19’ new_phone = re.split(‘a’,phone) print(new_phone) 运行结果: