返回值:列表:列表中是全部匹配到的项正则表达式
import re ret = re.findall('a','eva egon yuan') #['a', 'a'] print(ret) ret = re.findall('[a-z]+','eva egon yuan') #['eva', 'egon', 'yuan'] print(ret)
ret = search('\d(\w)+','bdsjdbc14564fvfv')ide
ret = search('\d(?P<name>\w)+','bdsjdbc14564fvfv') #给分组命名为namespa
找整个字符串,遇到匹配上的就返回,遇不到就返回None3d
若是有返回值,ret.group()就能够取到值code
取分组中的内容:ret.group(1) #按照组的顺序(从第一个开始)对象
ret.group('name') #按照组的名字blog
import re ret = re.search('a','eva egon yuan') print(ret) #<_sre.SRE_Match object; span=(2, 3), match='a'> print(ret.group()) #a
import re # 报错:若是没有找到结果,那么返回None,调用group会报错 # ret = re.search('m','eva egon yuan') # print(ret) #None # print(ret.group()) #AttributeError: 'NoneType' object has no attribute 'group' # 使用下面方法不报错 # (1) 找到结果 ret = re.search('a','eva egon yuan') if ret: print(ret.group()) #a # (2) 没有找到结果 ret = re.search('m','eva egon yuan') if ret: print(ret.group()) #无任何结果,也不报错
从头开始匹配,匹配上就返回,匹配不上就返回None内存
匹配上:ret.group()取值字符串
import re # 若是正则规则从头开始能够匹配上,则返回一个变量,调用group显示 # 若是没匹配上,就返回None,调用group会报错 ret = re.match('[a-z]+','eva egon yuan') if ret: print(ret.group()) #eva
import re # 先按照'a'分割获得''和'bcd',再对''和'bcd'分别按照'b'分割 ret = re.split('[ab]','abcd') print(ret) #['', '', 'cd']
import re # 将数字替换成'H',参数1表示替换一次 ret = re.sub('\d','H','eva3egon4yuan4',1) print(ret) #evaHegon4yuan4
import re # subn # 将数字替换成'H',返回替换结果和替换次数 ret = re.subn('\d','H','eva3egon4yuan4') print(ret) #('evaHegonHyuanH', 3)
返回不少值,不想让它们一次性所有出如今内存里it
import re # 返回一个存放匹配结果的迭代器 ret = re.finditer('\d','ds3sy4764384a') print(ret) #<callable_iterator object at 0x0000013D05E83198> # 查看第一个结果 print(next(ret).group()) #3 # 查看第二个结果 print(next(ret).group()) #4 # 查看剩余的全部结果 print([i.group() for i in ret]) #['7', '6', '4', '3', '8', '4'] # 查看全部匹配结果:循环打印其中的数字 ret = re.finditer('\d','ds3sy4764384a') for i in ret: print(i.group()) # 3 4 6 7 3 8 4
正则表达式很长且要屡次使用
import re # 将正则表达式编译成一个正则表达式对象 obj = re.compile('\d{3}') #此规则要匹配3个数字 ret = obj.search('abc123eeee') print(ret.group()) #123 ret = obj.search('412e') print(ret.group()) #412 ret = obj.search('abgfnjgn78967ee') print(ret.group()) #789
import re ret = re.findall('www.(baidu|oldboy).com','www.oldboy.com') print(ret) #['oldboy'] # ?:——取消分组优先 ret = re.findall('www.(?:baidu|oldboy).com','www.oldboy.com') print(ret) #['www.oldboy.com']
import re ret = re.split("\d+","eva3egon4yuan") print(ret) #['eva', 'egon', 'yuan'] # 加()——取消分组优先 ret = re.split("(\d+)","eva3egon4yuan") print(ret) #['eva', '3', 'egon', '4', 'yuan']