首页 > 解决方案 > 你能在 Python 中预编译正则表达式,将它们保存到文件中,然后从文件中重新加载它们吗?

问题描述

我有一个应用程序,它从 Excel 文件加载一个大的正则表达式表,编译它们,然后使用它们来执行它的功能。Python 编译正则表达式大约需要 2 分钟,随着我在 Excel 文件中添加更多表达式,这个时间会增加。Excel 文件不经常更改,所以我想避免 Excel 文件没有更改时的两分钟以上的启动时间。

有没有办法将编译的正则表达式缓存到一个文件中,当 Excel 文件没有更改时我可以加载该文件?

标签: pythonregexcaching

解决方案


您可以将编译的正则表达式存储在 pickle 文件中:

import re
import pickle

r1 = re.compile('\d\d\d')

with open('tmp', 'wb') as fh:
    pickle.dump(r1, fh)


with open('tmp', 'rb') as fh:
    r2 = pickle.load(fh)

    print(r2.match('673'))

<re.Match 对象;跨度=(0, 3),匹配='673'>


推荐阅读