一、正则表达式在Re库中的使用
二、Re库的主要功能函数
1.re.search()
import re
match=re.search(r'[1-9]\d{5}','BIT 100081')
if match:
print(match.group(0))
结果输出:100081 ,即匹配的第一个对象
2.re.findall()
import re
ls=re.findall(r'[1-9]\d{5}','BIT 100081 TSU100084')
print(ls)
结果输出:['100081','100084'] ,即匹配的所有对象
3.re.split()
import re
ls=re.split(r'[1-9]\d{5}','BIT100081 TSU100084')
print(ls)
结果输出:['BIT',' TSU','']
import re
ls=re.split(r'[1-9]\d{5}','BIT100081 TSU100084',maxsplit=1) #只分割第一个位置
print(ls)
结果输出:['BIT',' TSU100084']
4.re.finditer() #迭代的输出每次匹配的结果
import re
for m in re.finditer(r'[1-9]\d{5}','BIT100081 TSU100084'):
if m:
print(m.group(0))
结果输出:
100081
100084
5.re.sub()
import re
ls=re.sub(r'[1-9]\d{5}',':zipcode','BIT100081 TSU100084')
print(ls)
结果输出:BIT:zipcode TSU:zipcode
三、Re库的另一种等价用法
当要用正则表达式多次匹配时,可加快运行速度。
四、Re库的match对象
1.类型
import re
match=re.search(r'[1-9]\d{5}','BIT 100081')
if match:
print(type(match))
结果输出:<class 're.Match'>
2.基本属性
3.基本方法
import re
match=re.search(r'[1-9]\d{5}','BIT100081 TSU100084')
print(match.string)
print(match.re)
print(match.pos)
print(match.endpos)
print('\n\n')
print(match.group(0))
print(match.start())
print(match.end())
结果输出:
五、Re库的贪婪匹配和最小匹配
同时存在多个不同长度的匹配项:
1.Re库默认采用贪婪匹配,即输出匹配最长的子串
import re
match=re.search(r'PY.*N','PYANBNCNDN') #存在多项匹配
print(match.group(0))
结果输出:PYANBNCNDN
2.如何输出最短的子串:
对匹配符进行扩展,即加'?' 。 也就是说,当正则表达式可以匹配不同长度的字符时,后面加'?',即可匹配最小
如下: 输出最小子串,在'N'之前加'?'
import re
match=re.search(r'PY.*?N','PYANBNCNDN')
print(match.group(0))
结果输出:PYAN