(参考)爬虫7-re库的使用

主要用于字符串的匹配

正则表达式的表示类型

raw string类型(原生字符串类型)

re库采用raw string类型表示正则表达式,表示为   r.'text'

例如:邮政编码表示为  r'[1-9]\d{5}'  电话号码表示为r'\d{3}-\d{8}|\d{4}-\d{7}'

raw string 是不包含转义符的字符串

当然也可以使用string类型,但是在每次出现\时,需要使用\\表示\

因此当正则表达式包含转义符时,使用raw string类型

详细来看:

import re
match=re.search(r'[1-9]\d{5}','BIT 100081')
if match:
    print(match.group(0))#输出100081

import re
match=re.match(r'[1-9]\d{5}','BIT 100081')
match.group(0)#输出nonetype

import re
match=re.match(r'[1-9]\d{5}','100081 BIT')
match.group(0)#输出100081

import re
ls=re.findall(r'[1-9]\d{5}','BIT100081 VHT167081')
print(ls) #输出 ['100081', '167081'],列表类型

 

import re
re.split(r'[1-9]\d{5}','BIT100081 VHT167081')
#输出 ['BIT', ' VHT', '']
import re
re.split(r'[1-9]\d{5}','BIT100081 VHT167081',maxsplit=1)
#输出 ['BIT', ' VHT167081']

 

import re
for i in re.finditer(r'[1-9]\d{5}','BIT100081 VHT167081'):
    if i:
        print (i.group(0))
#输出
'''
100081
167081
'''

import re
re.sub(r'[1-9]\d{5}',':zipcode','BIT100081 VHT167081')
#输出 'BIT:zipcode VHT:zipcode'

以上发现,search match finditer返回的都是match对象。

 

pattern是正则表达式的字符串或者原生字符串表示,regex才是正则表达式对象。

 

 

posted @ 2018-04-09 22:41  歪胡子的日常  阅读(151)  评论(0编辑  收藏  举报