(参考)爬虫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才是正则表达式对象。
invictus maneo!