一 不区分大小写的匹配
通常,正则表达式不区分大小写。
要让正则表达式区分大小写,可以向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)