我正在寻找一种能够找到与特定字符串匹配的所有模式的有效算法。模式集可以非常大(超过 100,000 个)和动态(随时添加或删除模式)。模式不一定是标准的正则表达式,它们可以是正则表达式的子集或类似于 shell 模式的东西(即:)file-*.txt
。首选正则表达式子集的解决方案(如下所述)。
仅供参考:我对基于 RegExp 列表的蛮力方法不感兴趣。
通过简单的正则表达式,我的意思是支持?
, *
, +
, 字符类[a-z]
和可能的逻辑运算符的正则表达式|
。
为了澄清我的需要:我希望找到与 URL 匹配的所有模式:
http://site1.com/12345/topic/news/index.html
响应应该是基于下面设置的模式的这些模式。
http://*.site1.com/*/topic/*
http://*.site1.com/*
http://*
模式集:
http://*.site1.com/*/topic/*
http://*.site1.com/*/article/*
http://*.site1.com/*
http://*.site2.com/topic/*
http://*.site2.com/article/*
http://*.site2.com/*
http://*