有没有办法让一个正则表达式模式在一次匹配后自动停止搜索。我想将正则表达式搜索添加到我尝试创建的Web服务中,但我不希望有人能够运行需要很长时间的正则表达式,只需要一次匹配即可。这可能吗?如何在不使用非贪婪字符的情况下停止1次匹配的正则表达式匹配
1
A
回答
0
真的不好退化模式永远不会匹配。如果您找到找到退化病例的好方法,那么您可能会得到lot of money。超时可能会更好。在Perl中,我将使用alarm
与块eval
结合使用。
您可能也在寻找Perl中的(*COMMIT),它可以防止回溯。
1
即使使用限制量词,您仍然可能以长时间运行的正则表达式结束。
实施可中断的功能,如this thread讨论是另一种选择。
相关问题
- 1. 在需要非贪婪匹配的情况下匹配正则表达式
- 2. 非贪婪正则表达式匹配
- 3. 非贪婪单字符匹配正则表达式
- 4. 贪婪正则表达式匹配
- 5. 如何编写匹配非贪婪的正则表达式?
- 6. 正则表达式非贪婪匹配制表符
- 7. 使用正则表达式查找所有匹配 - 贪婪和非贪婪!
- 8. 非贪婪的正则表达式匹配,JavaScript和ASP
- 9. 与正则表达式复杂的非贪婪匹配
- 10. 非贪婪匹配
- 11. 正则表达式匹配非贪婪与可选结束
- 12. 正则表达式非贪婪精确匹配
- 13. 正则表达式 - 在不使用$符号的情况下匹配字符(S)
- 14. 正则表达式贪婪匹配不按预期工作
- 15. Perl正则表达式:问号不是贪婪地匹配
- 16. 在正则表达式贪婪匹配(java)
- 17. PyParsing非贪婪匹配
- 18. 正则表达式匹配不止一次出现的字符
- 19. Perl非贪婪匹配 - 是“?”字符使用正确吗?
- 20. 为什么我的非贪婪Perl正则表达式仍然匹配太多?
- 21. 从填充符上的非贪婪匹配中获取匹配
- 22. 如何匹配一个URL非贪婪
- 23. 正则表达式:一个特定的情况下不匹配
- 24. 桑达非贪婪匹配:匹配第一个XML节点
- 25. 毕竟需要匹配的正则表达式的贪婪是否被使用?
- 26. 正则表达式:不匹配字符串的匹配顺序
- 27. 如何在这种情况下将字符串与正则表达式匹配?
- 28. 正则表达式匹配任何字符串,多个字符串包括VIM换行符非贪婪
- 29. 非贪婪的正则表达式
- 30. 非贪婪在Python正则表达式
是不是你最糟糕的情况会成为一个谁将放入一个复杂的正则表达式将没有匹配?似乎你最好使用其他机制来阻止消耗运行时的正则表达式搜索。另外,你应该知道在预优化之前,regex是否会成为一个重要的潜在瓶颈 – Jherico 2009-05-26 18:26:24