多正则表达式匹配的应用

搜索引擎 Query 分析

Query 意图分析

定义一批规则(正则表达式),每条规则表达一种搜索的意图,例如问路、吃饭、看病、查找ip、查找电话、小说、软件下载……

Query 改写

定义一批规则(正则表达式),每条规则,使用一种方法/策略变换/改写用户 Query,以改善用户体验

敏感词过滤/扫描

如果所有的敏感词都是一个个精确的词,那直接用 AC 自动机 就可以解决,速度快,内存占用还小。
但是,如果有一些敏感词是正则表达式,比如 POWER 8 极限算法挑战赛第二期 —— 敏感词大数据过滤;这只是一个小比赛,现实中的情况更加严酷!

网络安全

  • 协议识别,如 l7-filter 等
  • 入侵检测,深度包检测,等等,有些场景还有例外排除规则,正好使用 并、交、差 功能

文本编辑

简单替换

多正则批量替换,使用 unix sed 可以批量修改文本文件,但是,当需要将不同的 Source 替换成不同的 Destination 时,sed 只能一趟又一趟地去替换。使用多正则匹配,一趟就可以完成。

复杂替换

TODO:

日志分析

很多时候,同一个日志文件中包含多种格式不同的日志,要对每种日志,调用不同的分析函数。使用多正则匹配,扫描一遍,就可以知道是哪种日志。

Web服务器

一般的 Web 服务器都有 url rewrite 功能,例如 Apache 服务器几乎可以配置任意复杂的 url rewrite 规则,但是它们使用的都是非常低效的算法:逐个遍历匹配。虽然它们做了一些分组,使得同一组(目录)内规则数量很小,这在大部分情况下都工作的不错,但是一旦碰到组内规则太多时,就会显著降低性能。有了多正则匹配算法,这个问题根本就是小菜一碟。

URL 分析

场景1

某搜索引擎收集了大量的网页,其中很多网页的 url 至少有两种形式:PC版url手机版URL,要识别这种对应关系,人工定义了几十万个正则表达式,这个规则库还在迅速增加中……

场景2

某搜索引擎需要对网页中的 url 链接做归一化,定义了几万条归一化规则(正则表达式),而且还有例外排除规则,这个规则库也在迅速增加中……

在这个场景下,除了多正则匹配,还需要 并、交、差 功能

作者:
该日志由 rockeet 于2014年12月10日发表在自动机分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
转载请注明: 多正则表达式匹配的应用
标签:
【上一篇】
【下一篇】

您可能感兴趣的文章:

发表评论

您必须 登录 后才能发表评论。