我是靠谱客的博主 饱满黄蜂,最近开发中收集的这篇文章主要介绍python正则表达式编译_用Python编译正则表达式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

小编典典

嗯 这很奇怪。到目前为止,我的知识(以及从其他来源(从该问题获得的信息))提出了我的初步答案:

第一个答案

Python会缓存您使用的最后100个正则表达式,因此,即使您没有显式编译它们,也不必每次使用时都重新编译它们。

但是,有两个缺点:达到100个正则表达式的限制时,整个缓存将被删除,因此,如果您连续使用101个不同的正则表达式,则每次都会重新编译每个正则表达式。好吧,那是不太可能的,但是仍然如此。

其次,为了找出是否已经编译了正则表达式,解释器每次都需要在高速缓存中查找正则表达式,这确实需要一点额外的时间(但由于字典查找非常快,所以不需要很多)。

因此,如果您明确编译正则表达式,则可以避免执行此额外的查找步骤。

更新资料

我刚刚做了一些测试(Python 3.3):

>>> import timeit

>>> timeit.timeit(setup="import re", stmt='''r=re.compile(r"w+")nfor i in range(10):n r.search(" jkdhf ")''')

18.547793477671938

>>> timeit.timeit(setup="import re", stmt='''for i in range(10):n re.search(r"w+"," jkdhf ")''')

106.47892003890324

因此,似乎没有进行任何缓存。也许这是在特殊条件下timeit.timeit()跑步的怪癖?

另一方面,在Python 2.7中,区别并不明显:

>>> import timeit

>>> timeit.timeit(setup="import re", stmt='''r=re.compile(r"w+")nfor i in range(10):n r.search(" jkdhf ")''')

7.248294908492429

>>> timeit.timeit(setup="import re", stmt='''for i in range(10):n re.search(r"w+"," jkdhf ")''')

18.26713670282241

2020-12-20

最后

以上就是饱满黄蜂为你收集整理的python正则表达式编译_用Python编译正则表达式的全部内容,希望文章能够帮你解决python正则表达式编译_用Python编译正则表达式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部