一、finditer
import re
it=re.finditer(r"\d+","我的电话是10086,我对象电话是10010")
for i in it:
print (i.group())
#这里finditer是python中的迭代器,利用group函数输出结果。\d+就是取数字的正则表达式
二、compile
obj=re.compile("\d+")
r=obj.finditer("我的电话是10000,我对象电话是10011")
for it in r:
print (it.group())
#也可以用compile预加载一个正则,可起到反复使用的作用
三、进阶
s='''
<div class='ja'><span id='1'>resnet</span></div>
<div class='jj'><span id='2'>lenet</span></div>
<div class='jo'><span id='3'>alexnet</span></div>
<div class='jc'><span id='4'>vgg</span></div>
<div class='td'><span id='5'>googlenet</span></div>
'''
obj=re.compile("div class='.*?'><span id='.*?'>.*?</span></div>",re.S) #re.S的作用是可以让.匹配到换行符
r=obj.finditer(s)
for i in r:
print (i.group())
#用上述的正则表达式即可找到我们想要的。
ob=re.compile("div class='(.*?)'><span id='(?P<id>.*?)'>(?P<name>.*?)</span></div>",re.S)
a=ob.finditer(s)
for i in a:
print (i.group('name'))
#而当我们需要表达式中特定的内容,我们就可以用 (?P<id>.*?) 其中的id可以自己设置。
当 print (i.group('name'))即可输出该部分的内容。再如:
ob=re.compile("div class='(.*?)'><span id='(?P<id>.*?)'>(?P<name>.*?)</span></div>",re.S)
a=ob.finditer(s)
for i in a:
print (i.group('name'))
print(i.group('id'))