我有兴趣知道使用什么样的算法来匹配它,以及它们是如何优化的,因为我想有些正则表达式会产生大量可能的匹配,这可能会导致严重的问题出现在一个效果不佳的正则表达式上解析器。
另外,我最近发现了ReDoS的概念,为什么(a|aa)+
或(a|a?)+
这样的正则表达式会导致问题?
答案 0 :(得分:2)
我发现http://www.regular-expressions.info有关于正则表达式的非常有用的信息。
答案 1 :(得分:1)
Regex Buddy有这个调试页面,“在正则表达式引擎中为您提供独特的视图”。
答案 2 :(得分:0)
正则表达式引擎有两种:NFA和DFA。我很生疏,所以我不敢记忆中的具体细节。但是,通过算法的Here is a page。一些解析器在表达不佳的情况下表现更好。一本关于这个主题的好书(坐在我的架子上)是Mastering Regular Expression。