来自Perl的文档:
study
函数使用一些额外时间来研究待匹配字符串(SCALAR, 如果未指定则默认为 $_ ),以期在下次修改之前执行大量模式匹配。这可能会节省时间,也可能不会,这取决于您要搜索的模式的性质和数量以及要搜索的字符串的字符频率分布;
我正在Python中尝试加速一些正则表达式驱动的解析工作,并且我想起了Perl中的这个技巧。我意识到我必须进行基准测试才能确定是否有加速,但我找不到Python中等效的方法。
来自Perl的文档:
study
函数使用一些额外时间来研究待匹配字符串(SCALAR, 如果未指定则默认为 $_ ),以期在下次修改之前执行大量模式匹配。这可能会节省时间,也可能不会,这取决于您要搜索的模式的性质和数量以及要搜索的字符串的字符频率分布;
我正在Python中尝试加速一些正则表达式驱动的解析工作,并且我想起了Perl中的这个技巧。我意识到我必须进行基准测试才能确定是否有加速,但我找不到Python中等效的方法。
Perl的study函数已经不再起作用了。现在编译的正则表达式比study
创建时聪明得多。
例如,它将备选项编译成带有Aho-Corasick预测的trie结构。
使用perl -Mre=debug
运行以查看正则表达式编译器和执行引擎应用的巧妙技巧。
re.compile
,正如@Frg注意到的那样。
或者,您可以使用后缀树(此处是一个实现,或这里是一个带有Unicode支持的C扩展)或后缀数组(实现)。
re.compile(...)
编译正则表达式对象,但这仅涵盖了正则表达式方面。我还没有听说过Python中有任何研究将要搜索的字符串的功能。 - Frgre.compile
相当于 Perl 的qr//
。 - ikegami