给定模式p和字符串s,假设p为小写。以下哪两项更有效?
r = re.compile(r'p', RE.IGNORECASE)
r.match(s)
......或......
r = re.compile(r'p')
r.match(s.lower())
答案 0 :(得分:3)
这真的取决于语言和引擎。 s.lower()
和re.IGNORECASE
通常只会很慢,因为他们正在尝试处理本地化或Unicode字符串(请参阅this question)。如果你正在使用的正则表达式包处理它,而s.lower()
方法没有处理,那么s.lower()
方法就是一个明确的胜利。反之亦然。
一般来说,我希望s.lower()
方法更快(它往往比正则表达式匹配更优化)。但在给出的例子中......
r = re.compile(r'[Pp]')
r.match(s)
......比其中任何一个都要快。