我一直在關於正則表達式匹配器搜索模式背後的理論。所以,說我有一個匹配aab
的正則表達式,如果不是在字符串開頭的match
,我希望能夠從字符串的任何位置開始執行此匹配。我的意思是 - 在匹配模式下,我只能驗證字符串aab
與一個正則表達式是否一致,另一方面是search
這應該與產生相應跨度結果的aaab
一起工作。 所以超級特別的 - 是否有任何方法來構建DFA searcher
,或者這是根本不可能的,因爲它需要額外的內存,你不能在DFSM中擁有。很顯然,通過在for循環中重新應用matcher
來輸入字符串,您實際上可以從matcher
構建searcher
,但這種方法的複雜性類似於O(len_of_pattern * len_of_input)。正則表達式:與DFA搜索(而不是匹配)
2
A
回答
1
我想你基本上回答了你自己的問題。像現代正則表達式實現中的許多其他功能一樣,搜索利用內存奇蹟來執行有限自動機不可行的事情。由於這需要內存,因此DFA傳統上無法循環字符串或沿輸入回溯。搜索需要能夠找到一個匹配,然後瞭解匹配如何匹配字符串。
1
正則表達式搜索器基本上與正則表達式匹配器相同,.*
附加在表達式的前面。
相關問題
- 1. 正則表達式匹配最短匹配而不是最長
- 2. Emacs通過精確正則表達式匹配而不是部分搜索
- 3. 正則表達式只匹配完全匹配而不匹配
- 4. 類別匹配 - 正則表達式與全文搜索
- 5. Nginx的位置搜索終止匹配與正則表達式
- 6. 正則表達式與不匹配
- 7. 正則表達式到DFA
- 8. 正則表達式匹配[]但不是\ [\]
- 9. 正則表達式匹配(但不是\)(
- 10. 正則表達式匹配數不是
- 11. 正則表達式匹配%但不是\%
- 12. Python的正則表達式搜索或匹配不工作
- 13. 與正則表達式匹配的正則表達式
- 14. Mysql的正則表達式:匹配與正則表達式
- 15. Ruby正則表達式與正則表達式匹配
- 16. 正則表達式匹配的是數字,而不是字母
- 17. 找到正則表達式搜索/匹配的結束索引
- 18. Perl如果正則表達式匹配A而不是正則表達式匹配B打印
- 19. 匹配列表與正則表達式
- 20. 檢查表達式是否與正則表達式匹配
- 21. 正則表達式:不匹配的子正則表達式
- 22. 正則表達式匹配任何其他正則表達式不匹配
- 23. 奇怪的正則表達式(正則表達式)匹配!不匹配數字
- 24. C#正則表達式不匹配,但正則表達式測試者匹配
- 25. 正則表達式不匹配正確
- 26. 正則表達式不匹配正確
- 27. 正則表達式匹配
- 28. 正則表達式匹配
- 29. 正則表達式匹配%
- 30. 正則表達式匹配