5re库的使用

1.当正则表达式包含<转义符>时使用raw string (原生字符串类型:不包含转义符) r’text’
eg:国内电话号码r’\d{3}-\d{8}|\d{4}-\d{7}’
2.re.search:搜索匹配正则表达式的第一个位置,返回match对象
eg:import re 中国邮政编码
match=re.search(r’[1-9]\d{5}’,‘BIT 100081’)
if match:
print(match.group(0))-----100081
3.re.match:从字符串开始位置起匹配
eg:import re
match=re.match(r’[1-9]\d{5}’,‘BIT 100081’)
if match:
print(match.group(0))-----无结果(开始不符合)
match=re.match(r’[1-9]\d{5}’,‘100081 BIT’)
if match:
print(match.group(0))-----‘100081’
4.re.findall:以列表类型返回全部能匹配的子串
eg:import re
ls=re.findall(r’[1-9]\d{5}’,‘BIT100081 TUS100084’)
ls---------[‘100081’.‘100084’]
5.re.split:将一个字符串按正则表达式匹配结果进行分割,返回列表类型
eg:import re
re.split(r’[1-9]\d{5}’,‘BIT100081 TUS100084’)-- [‘BIT’,‘TSU’,’ ‘]
re.split(r’[1-9]\d{5}’,‘BIT100081 TUS100084’,maxsplit=1)最多匹配分割一次,其他的放在一个里
— [‘BIT’,‘TSU100084’]
6.re.finditer:搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象。
import re
for m in re.finditer(r’[1-9]\d{5}’,‘BIT100081 TUS100084’)
if m:
print(m.group(0))---------100081
100084
7.re.sub:替换所有匹配正则表达式的子串,返回被替换后的字符串
import re
re.sub(r’[1-9]\d{5}’,‘zipcode’,‘BIT100081 TUS100084’)
‘BITzipcode TUSzipcode’
8.re库的等价用法
rst=re.search(r’[1-9]\d{5}’,‘BIT100081’)
等价于
pat=re.compile(r’[1-9]\d{5}’)将正则表达式的字符串形式编译成正则表达式对象
rst=pat.search(‘BIT100081’)

9.match对象的属性
.string:待匹配文本
.re:匹配时使用的pattern对象(正则表达式)
.pos:正则表达式搜索文本的开始位置
.endpos:正则表达式搜索文本的结束位置

10.match对象的方法
.group(0):获取匹配后的字符串
.start():匹配字符串在原始字符串的开始位置
.end():匹配字符串在原始字符串的结束位置
.span():返回(.start(),.end())

eg:import re
m=re.search(r’[1-9]\d{5}’,‘BIT100081 TSU100084’)
m.string-------‘BIT100081 TSU100084’ 匹配所用的字符串
m.re---------re.compile(’[1-9]\d{5}’) 匹配所用的正则表达式
m.pos-------0 搜索字符串的开始位置
m.endpos-------19 搜索字符串的结果位置
m.group(0)------‘100081’ 返回匹配结果
m.start()----------3 返回匹配结果的起始位置
m.end()--------9 返回匹配结果的结束位置

11.re库的贪婪匹配和最小匹配
re库默认采用贪婪匹配,即输出匹配最长的子串
match=re.search(r’PY.N’,‘PYANBNCNDN’)
match.group(0)--------‘PYANBNCNDN’
想输出最短子串---------最小匹配
match=re.search(r’PY.
?N’,‘PYANBNCNDN’)
match.group(0)--------‘PYAN’

猜你喜欢

转载自blog.csdn.net/ajx10132/article/details/86138192