一、 引言
在《第11.2节 Python 正则表达式支持函数概览》介绍了re模块的主要函数,在《第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer》重点介绍了几个搜索函数。这些介绍的搜索函数都是直接使用正则表达式去匹配搜索文本,实际上re模块还支持将正则表达式先编译再搜索匹配,这种先编译后搜索在同一个正则表达式多次去执行匹配时可以提高匹配执行效率。
二、 re.compile函数
三、 正则对象Pattern的属性
四、 正则对象的方法
案例:
>>> str='Learning Python with LaoYuan123'
>>> str[22:29]
'LaoYuan'
>>> patstr='LaoYuan$'
>>> pat=re.compile(patstr)
>>> pat.search(str,endpos=29)
>>>
上述案例中搜索文本结尾是123,但指定了结束位置刚好到搜索模式串,因此$最终匹配成功。
>>> patstr='Python'
>>> str='LaoYuanPython'
>>> pat=re.compile(patstr)
>>> pat.match(str,7)
>>>
>>> pat=re.compile(r"第[一-十][章回](.)*")
>>> pat.fullmatch('第二回 悟彻菩提真妙理 断魔归本合元 ')
>>>
>>> pat=re.compile(r'(\W+)')
>>> pat.split('Hello,world')
['Hello', ',', 'world']
>>>
>>> pat=re.compile(r'(\w+)')
>>> pat.findall('Learning python with LaoYuan')
['Learning', 'python', 'with', 'LaoYuan']
>>>
>>> pat=re.compile(r"第[一-十][章回]")
>>> for i in pat.finditer("第一回灵根育孕源流出 心性修持大道生 第二回悟彻菩提真妙理 断魔归本合元神"):print(i)
>>>
>>> patstr=r'(?i)(python)'
>>> pat=re.compile(patstr)
>>> pat.sub(r'\1->\g<1>->Python','Learning python with LaoYuan,LaoYuanPython accompanies you to progress')
'Learning python->python->Python with LaoYuan,LaoYuanPython->Python->Python accompanies you to progress'
>>>
>>> pat.subn(r'\1->\g<1>->Python','Learning python with LaoYuan,LaoYuanPython accompanies you to progress')
('Learning python->python->Python with LaoYuan,LaoYuanPython->Python->Python accompanies you to progress', 2)
>>>
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!