『娱乐思思话』Python正则表达式由浅入深(二)( 二 )


message='企业名称:CDA数据科学研究院n邮箱:1918560461@qq.comn地址:北京市海淀区厂洼街3号2号楼2层n网址:www.cda.cnn企业名称:广州就学在线科技有限公司n邮箱:981856661@qq.comn地址:广州市黄埔区护林路1198号516房n网址:www.cda.cnn'
findall=re.findall(pattern,message)
print(findall)
Out:[':',':','@','.',':',':','.','.',':',':','@','.',':',':','.','.']
当然 , 单独提取这些符号没有多大意义 , 如果我们希望匹配的是这些符号后面对应的字符呢?我们可以在模式字符串中的列表后面添加元字符和限定符:
pattern='[@:.].*'
message='企业名称:CDA数据科学研究院n邮箱:1918560461@qq.comn地址:北京市海淀区厂洼街3号2号楼2层n网址:www.cda.cnn企业名称:广州就学在线科技有限公司n邮箱:981856661@qq.comn地址:广州市黄埔区护林路1198号516房n网址:www.cda.cnn'
findall=re.findall(pattern,message)
print(findall)
Out:[':CDA数据科学研究院',':1918560461@qq.com',':北京市海淀区厂洼街3号2号楼2层',':www.cda.cn',':广州就学在线科技有限公司',':981856661@qq.com',':广州市黄埔区护林路1198号516房',':www.cda.cn']
同理 , 上一节最后提取企业名称、邮件、地址的例子 , 我们可以写成下面这样的方式:
pattern='[企邮地].*'
message='企业名称:CDA数据科学研究院n邮箱:1918560461@qq.comn地址:北京市海淀区厂洼街3号2号楼2-3层n网址:www.cda.cnn企业名称:广州就学在线科技有限公司n邮箱:981856661@qq.comn地址:广州市黄埔区护林路1198号516房n网址:www.cda.cn'
findall=re.findall(pattern,message)
print(findall)
Out:['企业名称:CDA数据科学研究院','邮箱:1918560461@qq.com','地址:北京市海淀区厂洼街3号2号楼2-3层','企业名称:广州就学在线科技有限公司','邮箱:981856661@qq.com','地址:广州市黄埔区护林路1198号516房']
上面模式字符串的写法相当于匹配以"企"、"邮"、"地"开头的字符 , 以及后续的字符串 , 一直到换行符才结束匹配 。
这类的模式字符串还经常用于匹配某类型的字符 , 比如匹配文本里面所有的汉字 , 我们可以将模式字符串写成'[一-龥]+' , 比如:
pattern='[一-龥]+'
message='企业名称:CDA数据科学研究院n邮箱:1918560461@qq.comn地址:北京市海淀区厂洼街3号2号楼2层n网址:www.cda.cnn
企业名称:广州就学在线科技有限公司n邮箱:981856661@qq.comn地址:广州市黄埔区护林路1198号516房n网址:www.cda.cnn'
findall=re.findall(pattern,message)
print(findall)
Out:['企业名称','数据科学研究院','邮箱','地址','北京市海淀区厂洼街','号','号楼','层','网址','企业名称','广州就学在线科技有限公司','邮箱','地址','广州市黄埔区护林路','号','房','网址']
匹配文本中所有的数字 , 可以写成'[0-9]+' , 比如:
pattern='[0-9]+'
message='企业名称:CDA数据科学研究院n邮箱:1918560461@qq.comn地址:北京市海淀区厂洼街3号2号楼2层n网址:www.cda.cnn
企业名称:广州就学在线科技有限公司n邮箱:981856661@qq.comn地址:广州市黄埔区护林路1198号516房n网址:www.cda.cnng'
findall=re.findall(pattern,message)
print(findall)
Out:['1918560461','3','2','2','981856661','1198','516']
当然 , 直接使用元字符"d"来匹配所有数字也是一样:
pattern='d+'
message='企业名称:CDA数据科学研究院n邮箱:1918560461@qq.comn地址:北京市海淀区厂洼街3号2号楼2层n网址:www.cda.cnn企业名称:广州就学在线科技有限公司n邮箱:981856661@qq.comn地址:广州市黄埔区护林路1198号516房n网址:www.cda.cnng'


推荐阅读