[发明专利]正则表达式分组方法及装置有效
申请号: | 201410099132.4 | 申请日: | 2014-03-17 |
公开(公告)号: | CN103854056B | 公开(公告)日: | 2016-11-16 |
发明(设计)人: | 付哲;王凯;李军 | 申请(专利权)人: | 清华大学 |
主分类号: | G06N3/12 | 分类号: | G06N3/12 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李迪 |
地址: | 100084 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 正则 表达式 分组 方法 装置 | ||
技术领域
本发明涉及计算机领域,尤其是一种正则表达式分组方法及装置。
背景技术
深度检测技术是一种基于应用层的流量监测和控制技术,其克服了传统的网包过滤和状态检测技术只能检测包头而不能检测数据载荷的缺点,通过与事先设定的规则集进行匹配,能够识别、分类或阻止具有特殊数据或者特定载荷的网包,在对抗病毒、垃圾邮件、非法入侵等方面发挥着重要作用。随着网络的发展,深度检测变得越来越复杂。因此,作为深度检测的核心技术之一,正则表达式匹配逐渐取代功能单一的精确字符串匹配,成为深度检测中规则语言的首选。
正则表达式被通过转换成等价的非确定型有限自动机(NFA)或确定型有限自动机(DFA)来实现模式匹配。NFA状态总数小,存储空间高效,但是在最坏情况下处理每个字符的时间复杂度为o(n)(n为NFA的状态数目),对存储带宽要求很高,匹配效率低下。DFA在匹配过程中的任意时刻,对于每一字符仅有一种状态跳转可能,匹配效率高,但存在着存储空间开销较大等缺点。随着网络流量的不断增加,对正则表达式匹配引擎的速度要求越来越高;同时,实际网络环境中网包可能乱序到达,在匹配之前必须进行重组,这就要求匹配引擎能够保存中间状态。在一些情况下,DFA存在状态膨胀的问题。例如,由于“.{n}”、“.*”等语法的存在,在将含有这类语法的正则表达式规则合并生成同一个DFA时,状态数会远大于每个规则单独生成的DFA的状态数之和。在最坏情况下,DFA的状态数目甚至呈指数爆炸。
因此,如何在保证匹配效率的同时,减少DFA的状态膨胀引起的空间消耗,是实现高效匹配算法需要考虑的关键问题。
发明内容
本发明的目的是,提供一种正则表达式分组方法及装置,能够在保证匹配效率的同时,减少DFA的状态膨胀引起的空间消耗。
本发明采用如下技术方案
一种正则表达式分组方法,包括:
101、将多条待分组正则表达式随机分组,得到至少一组表达式分组序列,根据所述至少一组表达式序列分组确定相应的至少一条染色体,并根据所述至少一条染色体确定相应的至少一个个体;
102、确定所述至少一个个体中每个个体的适应度,并根据每个个体的适应度与适应度阈值的比较结果获得较高适应度序列;
103、从所述较高适应度序列中任意选取两个适应度,确定被选取适应度的对应染色体,并对所述对应染色体进行交叉操作;
104、对经交叉操作后的染色体进行变异操作,获得变异染色体,并根据所述变异染色体确定对应的新一代个体;
105、判断是否到达预置收敛次数;
若是,则将所述新一代个体中的最优值作为问题的最优解;若否,则对所述新一代个体重复执行步骤102-105,直至到达预置收敛次数。
可选的,所述步骤104和步骤105之间还包括:
1041、获取所述较高适应度序列中最高适应度对应的个体,替换所述新一代个体中适应度最差的个体,并获得新一代个体。
可选的,所述步骤102中确定所述至少一个个体中每个个体的适应度包括:
对于每一代个体,找出最大DFA状态数和最小DFA状态数,并以最大DFA状态数和最小DFA状态数的和与各个个体的DFA状态数之差作为此个体的适应度。
可选的,所述步骤104中对经交叉操作后的染色体进行变异操作,获得变异染色体包括:
对于每一个个体,随机选择其染色体上的一个基因位,以变异概率pm进行变异,获得变异染色体。
可选的,所述步骤104中根据所述变异染色体确定对应的新一代个体之后,还包括:
每产生一代新个体后,找出其适应度最差的个体,并用上一代个体中适应度最优的个体取代新一代个体中适应度最差的个体。
基于上述技术方案,将多条待分组正则表达式随机分组,得到至少一组表达式分组序列,根据至少一组表达式序列分组确定相应的至少一条染色体,并根据至少一条染色体确定相应的至少一个个体;确定至少一个个体中每个个体的适应度,并根据每个个体的适应度与适应度阈值的比较结果获得较高适应度序列;从较高适应度序列中任意选取两个适应度,确定被选取适应度的对应染色体,并对对应染色体进行交叉操作;对经交叉操作后的染色体进行变异操作,获得变异染色体,并根据变异染色体确定对应的新一代个体;判断是否到达预置收敛次数。能够在保证匹配效率的同时,减少DFA的状态膨胀引起的空间消耗。
附图说明
图1为本发明实施例提供的一种正则表达式分组方法的流程图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410099132.4/2.html,转载请声明来源钻瓜专利网。