2009-05-26 21 views
1

有没有办法让一个正则表达式模式在一次匹配后自动停止搜索。我想将正则表达式搜索添加到我尝试创建的Web服务中,但我不希望有人能够运行需要很长时间的正则表达式,只需要一次匹配即可。这可能吗?如何在不使用非贪婪字符的情况下停止1次匹配的正则表达式匹配

+1

是不是你最糟糕的情况会成为一个谁将放入一个复杂的正则表达式将没有匹配?似乎你最好使用其他机制来阻止消耗运行时的正则表达式搜索。另外,你应该知道在预优化之前,regex是否会成为一个重要的潜在瓶颈 – Jherico 2009-05-26 18:26:24

回答

0

真的不好退化模式永远不会匹配。如果您找到找到退化病例的好方法,那么您可能会得到lot of money。超时可能会更好。在Perl中,我将使用alarm与块eval结合使用。

您可能也在寻找Perl中的(*COMMIT),它可以防止回溯。

1

即使使用限制量词,您仍然可能以长时间运行的正则表达式结束。

实施可中断的功能,如this thread讨论是另一种选择。

相关问题