Web框架通过将请求路径与一系列正则表达式进行匹配来将传入请求路由到端点。那么用于存储请求路径(使用通配符)的好/最佳数据结构是什么。
如果有这样的包(用任何语言)?
答案 0 :(得分:0)
正则表达式比通配符支持更多。 trie通常可用于匹配前缀,只要它们是唯一的,但为了匹配备选列表的逻辑OR,请查看类似Aho-Corasick algorithm的内容。
然而,这些算法/数据结构仅考虑查找的静态部分,即匹配可预测的字符串。对于通配符匹配,如果允许任意回溯,则可以获得病态性能,这意味着在路径路由器中使用完整的正则表达式系统可能不是一个好主意,因为它可能导致拒绝服务。
查看this write up有关Go如何使用NFA将正则表达式(尽管是有限形式)转换为Thmopson's construction。