re包含一些模块级函数,用于处理作为文本字符串的正则表达式,不过对于程序频繁使用的表达式,编译这些表达式会更为高效。compile()函数会把一个表达式字符串转换为一个RegexObject。
- import re
-
- regexes = [ re.compile(p)
- for p in ['this', 'that']
- ]
- text = 'Does this text match the pattern?'
-
- print 'Text: %r\n' % text
-
- for regex in regexes:
- print 'Seeking "%s" ->' % regex.pattern,
-
- if regex.search(text):
- print 'match!'
- else:
- print 'no match'
输出:
Text: 'Does this text match the pattern?'
Seeking "this" -> match!
Seeking "that" -> no match
模块级函数会维护已编译表达式的一个缓存。不过,这个缓存的大小是有限的,直接使用已编译表达式可以避免缓存查找开销。使用已编译表达式的另一个好处是,通过在加载模块是预编译所有表达式,可以把编译工作转到应用开始时,而不是当程序响应一个用户动作是才进行编译。