关于正则表达式本身,就不多讲了,网上有好多教程。这里主要是讲下使用re模块中碰到的坑。。。
re.compile
把正则表达式编译为一个对象。可以选择把常用的正则表达式编译好,可以适当提高效率
举例:
pattern=re.compile(r'<a href.+?</a>')
re.findall
原来以为match是用来查找字符串中是否有目标字段的,后来发现结果怎么也出不来,再一查发现这个角色被findall承担了。
re.findall可以获取字符串中所有匹配的字符串。
举例:
p_user=re.compile(r'<a href.+?</a>')
text3='回复<a href="/n/wenmei33">@wenmei33</a>:13611060981,张艳红。圣竹园位于怀柔区北房镇,京承高速14号出口,沿101国道向密云方向前行10公里即到,是京郊“南果北种”的示范园。 //<a href="/n/wenmei33">@wenmei33</a>:怎么联系呢'
m=re.findall(p_user,text3)
for item in m:
print(item)
得到结果为
re.split
可以使用re.split来分割字符串,将字符串按空格分割成一个单词列表。
举例:
text5='winter is coming'
m=re.split(r'\s+',text5)
for item in m:
print(item)
得到结果为:
winter
is
coming
re.sub
re.sub用于替换字符串中的匹配项。举例:
text5='winter is coming'
m=re.sub(r'\s+','-',text5)
print(m)
这个例子是将字符串中的空格替换为’-‘
winter-is-coming
re.search
re.search函数会在字符串内查找,找到第一个匹配即返回,如果字符串没有匹配,则返回None。
举例:
p_face=re.compile(r'\[.+?\]')
text='这是要闹哪样?秋裤、羊毛裤、保暖裤,该穿的全穿上吧,保暖是真真的!今儿这风来头不小,大家出门注意保暖,瘦子没事就别出来了<i class="face face_1 icon_18">[偷笑]</i>第一次觉得当个胖子也是蛮好滴![江南style]'
res1=re.findall(p_face,text)
res2=re.search(p_face,text)
print(res1)
print(res2)
得到的结果如下
[‘[偷笑]’, ‘[江南style]’]
<_sre.SRE_Match object; span=(91, 95), match=’[偷笑]’>
可以看到,re.findall找到了所有匹配的字符串。而re.search 找到了第一个匹配字符串后就返回了
re.match
re.match 从字符串的开始匹配一个模式
举例:
text5='winter is coming'
m=re.match(r'(\w+)',text5).groups()
print(m)
运行结果为:
(‘winter’,)
re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。