gpt4 book ai didi

python - Python 是否在 re 模块中使用 NFA 进行正则表达式评估?

转载 作者:太空狗 更新时间:2023-10-29 21:27:39 27 4
gpt4 key购买 nike

有谁知道 Python(任何版本)是否使用 NFA(非确定性有限自动机)来评估正则表达式,或者它是否使用其他机制?如果可用,请提供链接/引用。

最佳答案

在 DFA 上这应该不到一毫秒:

$ time python3 -c 'import re; re.match("a?"*25+"a"*25, "a"*25)'
real 0m7.273s

25换100,一辈子都不会终止。

这是它在 DFA (grep) 上的样子:

$ time echo "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |grep "a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
real 0m0.063s

http://swtch.com/~rsc/regexp/regexp1.html 上对该主题进行了很好的讨论。

关于python - Python 是否在 re 模块中使用 NFA 进行正则表达式评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1748853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com