【发布时间】:2009-07-02 04:27:56
【问题描述】:
我需要使用简单的通配符支持将输入字符串 (URL) 与一大组字符串规则(从 1k 到 250k 不等)进行匹配。
通配符支持要求如下:
通配符 (*) 只能替换 URL 的“部分”。那是域、路径和参数的片段。例如,“*.part.part/*/part?part=part&part=*”。此规则的唯一例外是路径区域中的“/*”应该匹配斜杠之后的任何内容。
例子:
- *.site.com/* -- 应该匹配 sub.site.com/home.html, sub2.site.com/path/home.html
- sub.site.*/path/* -- 应该匹配 sub.site.com/path/home.html、sub.site.net/path/home.html,但不匹配 sub.site.com/home。 html
附加要求:
- 快速查找(我意识到“快速”是一个相对术语。考虑到最大 250k 规则,仍然在 如果可能。)
- 在现代桌面范围内工作(例如,不是服务器实现)
- 在给定输入字符串的情况下能够返回 0:n 匹配项
- 比赛将附加规则数据
对于此类任务,最好的系统/算法是什么?我将使用 C++ 开发解决方案,并将规则本身存储在 SQLite 数据库中。
【问题讨论】:
标签: c++ sqlite pattern-matching wildcard