正则表达式:不区分大小写的比较效率

时间:2010-07-02 22:32:39

标签: regex

给定模式p和字符串s,假设p为小写。以下哪两项更有效?

r = re.compile(r'p', RE.IGNORECASE)
r.match(s)

......或......

r = re.compile(r'p')
r.match(s.lower())

1 个答案:

答案 0 :(得分:3)

这真的取决于语言和引擎。 s.lower()re.IGNORECASE通常只会很慢,因为他们正在尝试处理本地化或Unicode字符串(请参阅this question)。如果你正在使用的正则表达式包处理它,而s.lower()方法没有处理,那么s.lower()方法就是一个明确的胜利。反之亦然。

一般来说,我希望s.lower()方法更快(它往往比正则表达式匹配更优化)。但在给出的例子中......

r = re.compile(r'[Pp]')
r.match(s)

......比其中任何一个都要快。