Python瓦匠 —— 正则表达式(六)

一 不区分大小写的匹配

通常,正则表达式不区分大小写。

要让正则表达式区分大小写,可以向re.comppile()传入re.IGNORECASE或re.I作为第二个参数。

例如:

>>> import re
>>> case = re.compile(r'jack',re.I)#忽视大小写。
>>> mo = case.search('Jack is the best choice!')
>>> mo.group()
'Jack'

 

二 用sub()方法替换字符串

正则表达式可以用新的文本替换旧的文本。

Regex对象的sub()方法有两个参数:一个用于取代发现的字符串,一个是需要匹配的字符串。sub()方法返回替换完成的字符串。

例如:

>>> namesRegex = re.compile(r'Agent \w+')
>>> namesRegex.sub('Jack','Agent is a good boy!')#返回新的字符串。
'Jack a good boy!'

 

有时候可能需要用匹配的文本本身作为匹配的字符串。在sub()中的第一个参数中,可以输入\1 , \2 , \3...。表示替换中输入分组1,2,3...的文本。

例如:

>>> namesRegex = re.compile(r'Agent (\w)\w+')
>>> namesRegex.sub(r'\1**','Agent Jack is a good boy!')
'J** is a good boy!'
>>> 

 

三 管理复杂的正则表达式

当匹配复杂的文本模式,可能需要难以理解的正则表达式。可以向re.compile()传入变量re.VERBOSE作为第二个变量。这样re,compile()会忽略正则表达式中的空白符和注释,书写更加可读的正则表达式。

nameRegex = re.compile(r''' 正则表达式 ''',re.VERBOSE)

 

四 组合使用re.IGNORECASE、re.DOTALL、re.VERBOSE

re.compile()只能接收一个第二个参数。要想要组合使用它们,可以使用管道字符(|)将变量组合起来,从而绕过这个限制。管道在这里被称为‘按位或’操作符。

nameRegex = re.compile('Jack',IGNORECASE|re.DOTALL|re.VERBOSE)

 

posted @ 2018-02-04 12:13  未来分析师  阅读(151)  评论(0编辑  收藏  举报