有人知道Python(任何版本)是否使用NFAs(非確定性有限自動機)來評估正則表達式還是使用其他一些機制?請提供鏈接/參考(如果可用)。Python是否在re模塊中使用NFAs進行正則表達式評估?
6
A
回答
5
4
這應該小於在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
相關問題
- 1. 正則表達式使用python re模塊的分數數學表達式
- 2. 如何在Ultraedit正則表達式中進行評估替換
- 3. 幫助在python中使用re模塊構建正則表達式
- 4. Erlang re模塊多行正則表達式
- 5. python re模塊 - 使用什麼正則表達式來提取文本片段
- 6. 如何使用正則表達式評估約束? (PHP,正則表達式)
- 7. 使用switch語句評估正則表達式在javascript中
- 8. 在PHP XPath中使用正則表達式 - >評估
- 9. Pentaho正則表達式評估
- 10. Ruby用正則表達式評估表達式,沒有eval
- 11. 多行正則表達式使用Python請求模塊
- 12. 正則表達式用方括號和點分割python和re模塊
- 13. XPath是否對邏輯表達式進行短路評估?
- 14. python正則表達式模塊
- 15. AngularJS問題評估的正則表達式NG模式
- 16. Python re:否定正則表達式的一部分
- 17. 正則表達式不能正確評估在PHP中
- 18. 在regexp_replace中看似不正確的正則表達式評估
- 19. 正則表達式RE:所有而不是這種模式
- 20. 正則表達式正則表達式正則表達式使用正則表達式,但不是與Python
- 21. python的re:將正則表達式替換爲正則表達式
- 22. 評估數學表達式與正則表達式
- 23. 空表達式是否評估爲NOP?
- 24. django中的urls.py正則表達式評估順序是什麼?
- 25. Javascript - 在同一行上評估多個正則表達式
- 26. Python Re:使用正則表達式搜索
- 27. Python正則表達式模塊中的遞歸正則表達式?
- 28. 的Python re模塊來挑選翻譯一個Perl的正則表達式
- 29. iPhone - 使用UIWebView評估JavaScript和正則表達式
- 30. 使用正則表達式來評估搜索查詢
的大討論由於大多數RE引擎現在允許進行匹配的非正規語言我懷疑任何現代的可再生能源發動機實際上仍然使用NFA或DFA。 – Joey 2009-11-17 13:35:45
好吧,由於RE引擎可以識別RE的一個常規使用的子集,因此對這些場景進行優化是有意義的。所以他們有時可能會使用NFA或DFA。 – MSalters 2009-11-17 13:54:15