import re
lst = re.findall(r"\d+", "my phone is:10086") # 匹配字符串中所有的符合正则的内容,返回的是一个列表
#print(lst)
'''
finditer:匹配字符串中所有的内容,返回的是迭代器,从迭代器中得到内容需要.group(),效率比findall高
'''
it=re.finditer(r"\d+", "my phone is:10086")
#print(it)
for i in it:
print(i.group())
'''
search:全文匹配,找到一个结果就返回,返回的是match对象,拿到数据需要.group()
'''
s=re.search(r"\d+", "my phone is:10086")
#print(s.group())
'''
match:从头开始匹配,这是与search的区别
'''
s=re.match(r"\d+", "my phone is:10086")
#print(s.group())#这时会报错,因为不是以数字开头
#预加载正则表达式,实现反复使用
obj=re.compile(r'\d+')
ret=obj.finditer("my phone is:10086")
for i in ret:
print(i.group())
'''
(?P<分组名字>正则):可以单独从正则匹配的内容中进一步提取内容
re.S可以使.可以匹配换行
'''
t="<div class='zps'><span id='1'>张三</span></div> "
obj1=re.compile(r"<div class='.*?'><span id='(?P<id>\d+)'>(?P<name>.*?)</span></div>",re.S)
result=obj1.finditer(t)
for i in result:
print(i.group("id"))
print(i.group("name"))
|