由於錯誤的語法和非明顯的細節,一些正則表達式具有指數執行時間。如果一些正則表達式具有線性或指數執行時間,是否有任何常見的分析和學習方法?正則表達式執行時間分析
4
A
回答
4
我傾向於只使用perl
並在執行正則表達式操作之前打開use re 'debug';
。
這將打印正則表達式正在處理的步驟,並快速給出效率的概念。
沒有硬性規定 - 我尋找的大警告標誌是這個正則表達式是否需要回溯。請參閱:Catastrophic Backtracking
這可能發生更多當您使用前瞻/後向(但不必)時,很容易。
儘管事物的宏偉計劃 - 值得記住的是,雖然正則表達式是一種編程語言,它的起始點是作爲一個權力的搜索和替換。因此,在其中實現複雜的邏輯意味着你正在創建難以維護和調試的代碼 - 所以你不應該這樣做。
perl中有用的技巧之一 - 它可以使用命令行以與sed
/grep
/awk
幾乎相同的方式運行。
所以,你可以啓用正則表達式調試,然後執行「sed的風格」:
perl -pe 's/search/replace' somefile
但你可以添加「調試」正則表達式:
perl -Mre=debug -pe 's/search/replace/' somefile
這將調試它,而你」重新開始。
+2
災難性的回溯是最嚴重的罪犯 - 小心嵌套量詞。 –
+1
我想我剛剛發現了一個使用Perl的理由:) –
相關問題
- 1. 正則表達式解析時間戳
- 2. 時間正則表達式
- 3. JS在特定時間範圍內執行正則表達式
- 4. 正則表達式解析間隔
- 5. 用正則表達式分析和絃
- 6. 正則表達式詞法分析
- 7. 正則表達式分析的問題
- 8. Python正則表達式分析變量
- 9. HTML分析正則表達式
- 10. 正則表達式的SQL分析
- 11. 谷歌分析的正則表達式
- 12. 正則表達式爲谷歌分析
- 13. 谷歌分析正則表達式
- 14. URL分析正則表達式
- 15. 時間格式的正則表達式
- 16. 正則表達式時間格式?
- 17. 時間格式的正則表達式
- 18. 正則表達式{}解析
- 19. 正則表達式解析
- 20. 正則表達式解析
- 21. 正則表達式:解析出行
- 22. PHP的正則表達式解析行
- 23. 解析多行與正則表達式
- 24. 執行正則表達式替換Perl
- 25. fail2ban執行failregex的正則表達式
- 26. 執行流利的正則表達式
- 27. 是否有可能使用正則表達式分析正則表達式
- 28. 正則表達式的表達式分析在C#中
- 29. 正則表達式在期間分割
- 30. NYTProf執行時分析和不分析時的執行時間
顯然[正則表達式是邪惡的](https://stackoverflow.com/questions/4664850/find-all-occurrences-of-a-substring-in-python#comment83882449_4664850) – uhoh
@uhoh,是 - 現在我知道了肯定 –
感謝您的警告,我現在要避開它。 ;-) – uhoh