import re
'''
lst = re.findall(r"\d+","我的电话:10086,我妈电话是11086")
#findall:匹配字符串中所以符合正则的内容
print(lst)
#finditer:匹配字符串中所有内容【返回的是迭代器】,从迭代器中拿到内容要.group()
it = re.findall(r"\d+","我的电话:10086,我妈电话是11086")
for i in it:
print(i.group())
s = re.search(r"\d+","我的电话:10086,我妈电话是11086") #search返回的结果是match对象,拿数据需要.group(),找到一个结果就返回
print(s.group())
obj = re.compile(r"\d+") #只这样可以方便很多,让一个正则可以在多个地方使用
#compile可以将一个长长的正则进行预加载,方便后面的使用
ret = obj.finditer("我的·电话是10086,我妈是11086")
for it in ret:
print(it.group())
ret = obj.fidnall("cm111111115")
print(ret)
'''
#正则中内容的单独提取
s = """
<div class='joy'><span id='1'>张若昀</span></div>
<div class='jay'><span id='2'>李沁</span></div>
<div class='juy'><span id='3'>宋轶</span></div>
"""
obj = re.compile(r"<div class='.*?'><span id='\d+'>.*?</span></div>",re.S)
#re.S让.能匹配换行符
result = obj.finditer(s)
for it in result:
print(it.group())
这个的运行结果如下:
这样得到的是整体的匹配数据,但若只想得到仅含名字的数据,可以这样修改代码:
#(?P<分组名字>正则)这样就可以从正则匹配的内容中进一步提取内容
obj = re.compile(r"<div class='.*?'><span id='\d+'>(?P<suibianqu>.*?)</span></div>",re.S) #组名随便起
#re.S让.能匹配换行符
result = obj.finditer(s)
for it in result:
print(it.group("suibianqu")) #把取得名放进来
这样就能得到只含名字的运行结果啦: