一种dfa的正则表达式压缩方法

文档序号:7518825阅读:182来源:国知局
专利名称:一种dfa的正则表达式压缩方法
技术领域
本发明涉及正则表达式领域,具体涉及一种DFA的正则表达式压缩方法。
背景技术
正则表达式在网络信息处理领域有广泛的应用,比如协议识别、入侵检测等。实现 正则表达式匹配主要采用各种状态机,但DFA存在空间爆炸的问题,难以支持较多正则表 达式。本发明采用一种空间压缩方法,大大减少了存储DFA状态需要的存储空间。目前采用DFA的正则表达式匹配方案有几种。一种是适当改写正则表达式,提高 存储效率;第二种挖掘状态转移的特点,比如大多数状态的下一状态只有几个不同的值,可 以采用延迟转移等方法以较小的匹配速度代价节省存储空间;等等。

发明内容
本发明目的在于提供一种DFA的正则表达式压缩方法。一种DFA的正则表达式压缩方法,步骤如下A、将每一行或每一列正则式采用类游程编码的方式对每个状态进行压缩;B、每一行或每一列中编码后若均存在状态跳转条件唯一的状态,将这些状态组成 hash 表。本发明的一种优选技术方案在于所述类似游程编码方式是指在一个状态转移过 程中,若有多个输入可以转移至同一状态,则采用通配符进行输入替换记录。本发明的另一种优选技术方案在于在进行类游程长度解码之前,显查询hash 表,若成功,则该次跳转的类游程解码可省略,若不成功,则进行类游程解码。本发明大大减少了存储DFA需要的存储空间,在有限的空间内可以存储较多的正 则表达式。


图1是状态转移2是状态转移表
具体实施例方式先给一个正则表达式以及DFA的例子。假设正则表达式为\$
+ (\.
⑵){0,1}该表达式的作用是识别美元数目(以$开头,后接多个)。图(a)是状态转移图, 图(b)是状态转移表。转移表共有256列,分别对应一个字节的256个值;图中最后一列 的 …表示除0 9、.、$之外的所有字母。在状态D下,如果输入“.”,将进入状态C ;输 入0 9之间的数值,则均保持在D状态。本发明采用硬件执行正则表达式匹配,具体地,可以使用但不局限于FPGA(FieldProgrammable Gate Array,现场可编程门阵列)可编程逻辑器件。DFA的绝大多数状态只有几个不同的值(如例子中虽然每一行都有256个数值,但 第一行只有A、B这两个不同值,第二行只有3个不同的值等等),因此我们可以采用类似游 程长度编码的方式对每个状态进行压缩。游程长度编码比较简单,以例子中为例,假设表中 0123456789. $这些字符的编码是连续的,则第一行压缩后可以表示为(.,A) ($,B) (\xff, A),小于“.”的跳转到A,大于“.”小于“$ ”的跳转到B(例子中就只有$,因为“.”和“ $” 的编码紧邻),剩下的一直到255(即\xff)均跳转到Α。同样的,第二行则可表示为(9,D) (·,A) ($,B) (\xff, Α) ο我们注意到,很多情况下,每一行都有几个“独立”的状态,如表中每个状态在“$” 时会跳转到B,但“$”之前和之后的所有状态均不是B,也就是“$”的下一状态是“孤零零” 的,在我们的类游程长度编码中,即使这些“孤零零”的点也要占据一项。而在FPGA内部, 要同时完成跳转判断就要求编码的项数不能太多(即编码的括号个数不能太多,如上例中 第一行压缩后有3个括号,第二个状态压缩后则有4个),因此,我们可以事先将这些“孤零 零”的点提取出来组成一张hash表,在进行类游程长度解码之前,先查询该表,如果成功,则 该次跳转的类游程解码可省略,如果不成功,则进行类游程解码。
权利要求
1.一种DFA的正则表达式压缩方法,其特征在于步骤如下A、将每一行或每一列正则式采用类游程编码的方式对每个状态进行压缩;B、每一行或每一列中编码后若均存在状态跳转条件唯一的状态,将这些状态组成hash表。
2.如权利要求1所述一种DFA的正则表达式压缩方法,其特征在于所述类似游程编 码方式是指在一个状态转移过程中,若有多个输入可以转移至同一状态,则采用通配符进 行输入替换记录。
3.如权利要求1所述一种DFA的正则表达式压缩方法,其特征在于在进行类游程长 度解码之前,显查询hash表,若成功,则该次跳转的类游程解码可省略,若不成功,则进行 类游程解码。
全文摘要
本发明提供了一种DFA的正则表达式压缩方法。将每一行或每一列正则式采用类游程编码的方式对每个状态进行压缩;每一行或每一列中编码后若均存在状态跳转条件唯一的状态,可以将这些状态组成hash表。本发明大大减少了存储DFA需要的存储空间,在有限的空间内可以存储较多的正则表达式。
文档编号H03M7/30GK102064833SQ20101061172
公开日2011年5月18日 申请日期2010年12月17日 优先权日2010年12月17日
发明者刘兴奎, 李锋伟, 纪奎, 赵喜全 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1