re库的match对象
match = re.search(r'[1-9]\d{5}','BIT 100081')
if match:
print (match.group(0))
type(match) # <class '_sre.SRE_Match'>
Match对象的属性
- .string 待匹配的额文本
- .re 匹配时使用的pattern对象(正则表达式)
- .pos 正则表达式搜索文本的开始位置
- .endpos 正则表达式搜索文本的结束位置
Match对象的方法
- .group(0) 获取匹配后的字符串
- .start() 匹配字符串在原始字符串的开始位置
- .end() 匹配字符串在原始字符串的结束位置
- .span() 返回(.start(),.end())
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
m.span() # (3,9)
Re库的贪婪匹配与最小匹配
match= re.search(r'PY.*N','PYANBNCNDN')
match.group(0) # 'PYANBNCNDN'
贪婪匹配
Re库默认采用贪婪匹配,即输出匹配最常的子串
输出最短子串
match = re.search(r'PY.*?N','PYANBNCNDN')
match.group(0) # 'PYAN'
最小匹配操作符
- *? 前一个字符0次或无限次扩展,最小匹配
- +? 前一个字符1次或无限次扩展,最小匹配
- ?? 前一个字符1次或0次扩展,最小匹配
- {m,n}? 扩展前一个字符m至n次(含n),最小匹配