正则表达式匹配的方法和系统技术方案

技术编号:4008807 阅读:194 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种正则表达式匹配的方法和系统,属于计算机领域。该方法包括:将多个正则表达式分组,得到多个正则表达式组,其中每个正则表达式组中的每个正则表达式包括相同的字符串,称为广义字符串;将每个该正则表达式组编译成有限自动机,并建立每个正则表达式组的广义字符串与有限自动机的关联关系;用该广义字符串分别匹配待匹配的数据流,将匹配上的广义字符串作为匹配字符串;获取与该匹配字符串对应的有限自动机;根据该有限自动机对该待匹配的数据流进行正则表达式匹配并输出匹配结果。本发明专利技术缩短了数据加载的过程,减少了数据加载所消耗的时间,提高了匹配性能。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,特别涉及一种正则表达式匹配的方法和系统
技术介绍
正则表达式描述了一种字符串匹配的模式,可以用来进行文本匹配,具体为在给 定的字符串中寻找与给定的正则表达式相匹配的部分。正则表达式的应用范围很广,在通 信行业中主要应用于对数据流量进行模式匹配检查,如进行协议解析、病毒检测和业务分大寸寸。现有技术中,进行正则表达式匹配检查需要预先将正则表达式转换成 DFA (Deterministic Finite Automata,有限自动机),然后逻辑芯片根据编译后的DFA和 输入的数据流中的字符,来执行这个DFA。但由于一般使用时,待检查的规则都不只一条, 而是几千甚至上万条,单独的采用一个个的DFA对待匹配流量检查几千甚至上万次是不可 能的,因此为了不遗漏待检查的规则,一般都将这几千甚至上万条规则编译成一个大型的 DFA ( 一般有几百兆字节甚至IG字节),在匹配进行中,将待匹配的流量做为输入,以DFA报 告的输出作为匹配规则。在对现有技术进行分析后,专利技术人发现现有技术至少具有如下缺点由于大型的DFA大小有几百兆字节,而一般的逻辑芯片内部无法集成这样大容量 的片内存储器,只能是存储在外部的SRAM (Static Random AccessMemory,静态随机存储 器)或者 SDRAM (Synchronous Dynamic Random AccessMemory,同步动态随机存储器)中, 待匹配时,匹配到什么状态,就把这个状态相应的一部分DFA片段加载进入逻辑芯片内部 的缓存进行工作,在匹配过程中,需不断加载与当前状态关联的数据表项,并且经常由于状 态的跳转而重复加载与状态关联的数据表项,DFA越复杂,加载的数据表项就越多,这种匹 配的方法所需时间长,浪费存储资源,匹配性能低。
技术实现思路
本专利技术实施例提供了一种正则表达式匹配的方法和系统。所述技术方案如下一方面,一种正则表达式匹配的方法,包括将多个正则表达式分组,得到多个正则表达式组,其中每个正则表达式组中的每 个正则表达式包括相同的字符串,称为广义字符串;将每个所述正则表达式组编译成有限自动机,并建立每个正则表达式组的广义字 符串与有限自动机的关联关系;用所述广义字符串分别匹配待匹配的数据流,将匹配上的广义字符串作为匹配字 符串;获取与所述匹配字符串对应的有限自动机;根据所述有限自动机对所述待匹配的数据流进行正则表达式匹配并输出匹配结^ O另一方面,一种正则表达式匹配的系统,包括分组编译设备,用于将多个正则表达式分组,得到多个正则表达式组,其中每个正 则表达式组中的每个正则表达式包括相同的字符串,称为广义字符串;将每个所述正则表 达式组编译成有限自动机,并建立每个正则表达式组的广义字符串与有限自动机的关联关 系;匹配设备,用于匹配所述广义字符串和待匹配的数据流,将匹配上的广义字符串 作为匹配字符串;获取与所述匹配字符串对应的有限自动机;根据所述有限自动机对所述 待匹配的数据流进行正则表达式匹配并输出匹配结果。本专利技术实施例提供的技术方案的有益效果 是通过将多个正则表达式根据字符串分组,分别对每个正则表达式组编译,得到多 个有限自动机,并利用用于分组的字符串对待匹配的数据流进行匹配,再利用匹配的结果 加载有限自动机以进行正则表达式匹配,减少了匹配的过程中需要加载的数据,缩短了加 载的过程,从而减少了正则表达式匹配时数据加载所消耗的时间,提高了匹配性能。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1是现有技术中的DFA的状态示意图;图2是本专利技术实施例1提供的一种正则表达式匹配的方法;图3是本专利技术实施例2提供的一种正则表达式匹配的方法;图4是本专利技术实施例3提供的一种正则表达式匹配的系统示意图;图5是本专利技术实施例3提供的一种正则表达式匹配的系统示意图。具体实施例方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方 式作进一步地详细描述。在介绍本专利技术提供的正则表达式的匹配方法之前,首先对正则表达式的工作方式 进行简要的介绍正则表达式一般包括表示匹配次数的量词、表示具体位置的锚点和字符串。如有这样的一个正则表达式.*AUTH {10},这表示需要在待匹配的文本中 找到这样的一个字符串,其特征是文本中有一个AUTH的字符串,其后直接跟随了 10个 0 9之间的任意某个数字字符。这样的话,可能匹配上的字符文本就可以为http:// AUTH2009120901.html/ index,其中的粗体部分就是可以匹配上这个正则表达式的字 串ο其次,对DFA进行简单的介绍,参见图1,DFA实际上是自动状态机,其由多个状态 (图中的小圆)、每个状态的输入(箭头上的字符)及转换边(箭头)组成,其特点是对每 一个状态下,确定的输入一定有一个确定的输出,如图1中所示的S状态下输入a —定会转移到U状态。 实施例1为了减少正则表达式匹配过程中的数据加载消耗的时间,提高匹配性能,本专利技术 实施例提供了一种正则表达式匹配的方法,参见图2,该方法包括201 将多个正则表达式分组,得到多个正则表达式组,其中每个正则表达式组中 的每个正则表达式包括相同的字符串,称为广义字符串;202 将每个该正则表达式组编译成有限自动机,并建立每个正则表达式组的广义 字符串与有限自动机的关联关系;203:用该广义字符串分别匹配待匹配的数据流,将匹配上的广义字符串作为匹配 字符串;204 获取与该匹配字符串对应的有限自动机;205:根据该有限自动机对该待匹配的数据流进行正则表达式匹配并输出匹配结^ ο其中,本专利技术实施例所述的字符串是指正则表达式中的可打印字符和不可打印字 符组合所代表的含义,例如,有正则表达式.^AUTH {10},对于该正则表达式来说,其字 符串可以为auth,即是数据中必须有“auth”,本专利技术实施例对此不做具体限定。本专利技术实施例通过将多个正则表达式根据字符串分组,分别对每个正则表达式组 编译,得到多个有限自动机,并利用用于分组的多个字符串对待匹配的数据流进行匹配,再 利用匹配的结果加载有限自动机以进行正则表达式匹配,减少了匹配的过程中需要加载的 数据,缩短了加载的过程,从而减少了正则表达式匹配时数据加载所消耗的时间,提高了匹 配性能。实施例2为了减少正则表达式匹配过程中的数据加载消耗的时间,提高匹配性能,本专利技术 实施例提供了一种正则表达式匹配的方法,参见图3,该方法包括301 当匹配条件为多个正则表达式时,将该多个正则表达式分成多个正则表达式 组,每个正则表达式组内的每个正则表达式均包括相同的字符串,将用以区分各个正则表 达式组的该字符串称为广义字符串;在本步骤301中,对字符串本身没有要求,只要是正则表达式包含相同的字符串, 就可以归入一组内。例如,当两个正则表达式中均具有表示“数据需包含ace”的字符串,可将这两个正 则表达式分在一个组内。进一步地,如果包括相同字符串的正则表达式数量超过预设的阈值,则将本文档来自技高网
...

【技术保护点】
一种正则表达式匹配的方法,其特征在于,包括:将多个正则表达式分组,得到多个正则表达式组,其中每个正则表达式组中的每个正则表达式包括相同的字符串,称为广义字符串;将每个所述正则表达式组编译成有限自动机,并建立每个正则表达式组的广义字符串与有限自动机的关联关系;用所述广义字符串分别匹配待匹配的数据流,将匹配上的广义字符串作为匹配字符串;获取与所述匹配字符串对应的有限自动机;根据所述有限自动机对所述待匹配的数据流进行正则表达式匹配并输出匹配结果。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈建胡新宇
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1