import re
#findall,从左到右全部将待匹配对象检查一遍,根据正则,匹配所有符合田间的数据
#findall,前边一个参数为正则表达式,后面一个参数为待匹配对象,返回值是一个列表,将匹配到的结果以元素的形式放在列表中,若没有匹配到,则返回一个空列表
res = re.findall(‘a’,‘abdhafhjafgajkas’)
print(res)
res1 = re.search(‘a’,‘abdhafhjafgajkas’)
#search,根据正则,匹配到一个符合条件的数据就停止,返回值是一个对象,如果没找到,返回值就是none,取值的时候用.group(),
group取到的值是字符串类型,如果没有匹配到就会报错
print(res1)#<re.Match object; span=(0, 1), match=‘a’>
print(res1.group(),type(res1.group()))#a <class ‘str’>
#match,根据正则,从开头匹配,匹配到一个符合条件的数据就停止,如果开头匹配不上,那么就停止匹配,返回值是一个对象,如果没找到,返回值就是none,取值的时候用.group(),
# group取到的值是字符串类型,如果没有匹配到就会报错
res2 = re.match(‘a’,‘bdhafhjafgajkas’)
print(res2) #None
# print(res2.group(),type(res2.group())) #此处会报错
针对search,match,可以如下书写代码
res3 = re.match(‘a’,‘bdhafhjafgajkas’)
if res3:
print(res3.group(), type(res3.group()))
else:
print(‘没有匹配到相应的值’)
‘’’
res = re.finditer(‘a’,‘bdhafhjafgajkas’) #将匹配到的结果生成一个迭代器对象
print(res)
print(res.next().group())
‘’’
无名分组:使用小括号括起来的正则表达式就是无名分组,按照索引顺序取值
常用
res = re.search(‘1(\d{14})(\d{2}[0-9x])?$’,‘110105199812067023’)
print(res)
print(res.group()) # 110105199812067023
print(res.group(1)) # 10105199812067
print(res.group(2)) # 023
findall针对分组优先展示 无名分组
“”"
如果是findall,分组优先展示,无名分组
“”"
res = re.findall(“2(\d{14})\d{2}[0-9x]?$”,‘110105199812067023’)
print(res) # [‘023’]
有名分组:使用小括号括起来的正则表达式然后给起个名字就是有名的
res = re.search(‘3(?P\d{14})(?P\d{2}[0-9x])?$’,‘110105199812067023’)
print(res)
print(res.group(1))
print(res.group(2))
print(res.group(‘xxx’))
print(res.group(‘ooo’))
with open(r’中国红牛官网源码.txt’,‘r’,encoding=‘utf_8’) as f:
date = f.read()
import re
res = re.findall(‘
(.*?)
’,date)print(res)
res1 = re.findall(“
(.*?)
”,date)print(res1)
res3 = zip(res,res1)
print(list(res3))