字符串匹配方法和装置的制作方法

文档序号:6466523阅读:160来源:国知局
专利名称:字符串匹配方法和装置的制作方法
技术领域
本发明实施例涉及通信技术领域,特别涉及一种字符串匹配方法和装置。
背景技术
随着全IP (Internet Protocol,因特网协议)网络、固定移动融合、多重播放等概念的提出,传统的IP网络正在向集数据、语音和^f见频于一体的多业务统一承载网转变。但是IP网络固有的数据传送方式和本质上开》文的特征无法很好地满足电信级业务的需要,在网络安全性、可管理性和关键业务的QoS( Qualityof Service,服务质量)和QoE ( Quality of Experience,用户体验质量)保证等方面都有待改进。为了对一些关键业务进行精确的业务识别和控制,除了按照传统的方法分析报文头中的五元组等字段外,还需要对报文的负荷部分进行检测。DPI ( Deep Packet Inspection,深度报文才企测)技术作为一种灵活有效的业务识别技术应运而生。
现在,DPI技术多采用正则表达式取代字符串来描述报文特征。正则表达式是一种形式语言,由常量和算子組成,常量和算子分别指示元字符的集合和在这些集合上的运算。和字符串相比,正则表达式能够非常灵活、简单、有效地描述各种特征,使得特征串具有动态特性,适合各种动态搜索。例如b, ab, aab, aaab, aaaab,…这一系列的字符串特征可以简单地用一个正则表达式a化来表示,字符串可以看作是正则表达式的一种特例,后续将两者统称为字符串。
判断输入内容中是否包含字符串表示的规则的操作称为字符串匹配,现有技术提供的一种字符串匹配方法是基于DFA (Deterministic FiniteAutomation,确定性有限状态机)方法。
现在,字符串匹配在网络设备中得到越来越多的应用,比如在网络设备中对数据报文进行;险测。 一种趋势是利用FPGA (Field Programmable GateArray,现场可编程门阵列)、ASIC (Application Specific Integrated Circuit,专用集成电路)实现基于DFA的字符串匹配系统,这些系统依赖于各种存储器来保存DFA数据。现在常用的存储器有BRAM (Block Random AccessMemoiy,片内分块随才几存取存j渚器)、DRAM (Dynamic Random AccessMemory,动态随才几存取存4诸器)、SRAM (Static Random Access Memory,静态随机存取存储器)等几种。在使用较复杂的字符串规则集合时,无法用BRAM和SRAM来存储全部的DFA信息;虽然DRAM可以满足存储要求,但DRAM访问速度慢,满足不了线速处理的要求,而且频繁访问DRAM会成为整个系统的最大瓶颈。
现有技术的一种匹配方式是采用状态迁移表方式存储状态信息,利用存储的状态信息进行字符串匹配。状态迁移表方式是一种非紧凑存储方式,其基本的思路是将当前状态和输入字符分别作为表的两个维度,通过这两个参数可以唯一确定一个目的状态。
但是状态迁移表方式对每种可能的输入字符都需要存储,即使在某个状态上没有有效输入字符,也需要一个存储位置,因此上述存储方法占用的存储空间很大,无法用快速存储器件实现DFA的完全存储。
现有技术的另 一种匹配方式是采用邻接表方式存储状态信息,利用存储的状态信息进行字符串匹配。邻接表方式是一种紧凑存储方式。基本的思路是对某个当前状态,只存储有效字符对应的那些转移边信息。
但是邻接表方式存储的字符不连续,在进行字符比较时只能从第一个字符开始,逐个地对存储的字符进行比较,无法实现高速的字符串匹配处理,无法达到线速处理的性能要求,因此在高速系统中虽然节省了存储空间,仍然很少被用来进行字符串匹配。此外,在转移边个数比较多时,邻接表方式的存储方法节省的存储空间非常有限。
现有技术还提出了一种分级的内存结构来存储状态机信息,并利用存储的状态机信息进行字符串匹配。基本思路是按照访问速度将BRAM、 SRAM和DRAM从高到低组织起来,层次越高的存储器速度越高,容量越小;然后按照字符串规则的使用频度由高到低的顺序,将规则对应的状态机用不同的存
储器件来存放;使用频度高的规则优先放在层次较高的存储器中。
但是该方法对于所有规则仍然采用单一 的存储方式,而且同 一个状态机的所有状态在某个时刻会同时存储在同 一存储器中。在规则本身比较复杂时,BRAM中能够存储的状态机个数取决于规则的复杂程度。因此在规则个数较多或规则本身较复杂时,该方法不适用于字符串匹配操作。

发明内容
本发明实施例提供一种字符串匹配方法和装置,以实现对不同的状态信息采用不同的存储方式进行存储,利用存储的状态信息进行字符串匹配,提高字符串匹配性能。
为达到上述目的,本发明实施例一方面提供一种字符串匹配方法,包括
根据预设的状态属性阈值对状态信息进行分类;采用不同存储方式存储分类后的每类状态信息,所述不同存储方式的空间效率不同;利用存储的状态信息对接收的字符串进行匹配才喿作。
另一方面,本发明实施例还提供一种字符串匹配装置,包括分类模块,用于根据预设的状态属性阈值对状态信息进行分类;存储模块,用于采用不同存储方式存储所述分类模块分类后的每类状态信息,所述不同存储方式的空间效率不同;匹配模块,用于利用所述存储模块存储的状态信息对接收的字符串进行匹配操作。
再一方面,本发明实施例还提供一种状态信息的编译方法,包括
将正则表达式规则转换为状态机;
扫描状态机的每一个状态信息,根据预设的状态属性阈值对所述状态信息进行分类;
采用不同存储方式存储分类后的每类状态信息,所述不同存储方式的空间效率不同。
再一方面,本发明实施例还提供一种状态信息的编译工具,包括转换模块,用于将正则表达式规则转换为状态机;分类模块,用于扫描所述转换模块转换的状态机的每一个状态信息,根
据预设的状态属性阈值对所述状态信息进行分类;
存储模块,用于采用不同存储方式存储分类后的每类状态信息,所述不 同存储方式的空间效率不同。
与现有技术相比,本发明实施例具有以下优点本发明实施例对状态信 息进行分类,针对不同种类的状态信息釆用不同的存储方法,并利用存储的 状态信息进行字符串匹配。本发明实施例既压缩了整个状态信息的存储空间, 使之能够满足当前存储器件的容量限制,又保证了在进行字符串匹配时,有 较高的处理性能。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,下面描述中的附图仅仅是本发明的一些实施 例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
图1为本发明实施例提出的一种字符串匹配方法的流程图; 图2为本发明实施例提出的一种字符串匹配装置的结构图; 图3为本发明实施例提出的另一种字符串匹配装置的结构图; 图4为本发明实施例提出的字符串匹配装置的工作流程示意图; 图5为本发明实施例状态信息的编译方法的流程图; 图6为本发明实施例状态信息的编译工具的结构图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,所描述的实施例仅仅是本发明的一部分实施例,而不是 全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创 造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提出的一种字符串匹配方法的流程图,包
7括
步骤SlOl,根据预设的状态属性阈值对状态信息进行分类。
其中,状态属性具体可以为转移边数目和状态信息的访问频度,以及 当前状态和开始状态间的距离中的一种或多种。
在本发明实施例的一种实现方式中,可以预先设定一个转移边个数阈值, 将DFA状态的转移边数目和该转移边个数阈值进行比较,将状态信息分为非 紧凑状态信息和紧凑状态信息。例如可以将小于该转移边个数阈值的状态 信息分为紧凑状态信息,作为第一类状态信息;将大于该转移边个数阈值的 状态信息分为非紧凑状态信息,作为第二类状态信息。
当然本发明实施例并不局限于此,如何进行分类,分类的个数并不影响 本发明实施例的实现。
步骤S102,采用不同存储方式存储分类后的每类状态信息,不同存储方 式的空间效率不同。
本发明实施例将紧凑状态信息即第一类状态信息存储在DRAM中,并且 将部分紧凑状态信息存储在BRAM中,将非紧凑状态信息即第二类状态信息 存储在SRAM中,DRAM和BRAM的空间效率高于SRAM的空间效率。
步骤S103,利用存储的状态信息对接收的字符串进行匹配操作。
其中,利用存储的状态信息对接收的字符串进行匹配操作具体可以为
根据进行匹配操作的表示规则信息,获得该表示规则信息对应的状态信 息。当接收的字符串的当前字符和该状态信息的当前字符匹配时,根据该状 态信息的当前字符和当前状态确定目的状态的存储地址。然后,根据目的状 态的存储地址,确定目的状态信息的存储位置,并根据该存储位置读取该目 的状态信息进行下一个字符的匹配。
其中,根据存储位置读取目的状态信息进行下一个字符的匹配具体可以

当目的状态信息存储在片内存储器时,从片内存储器中读取该目的状态 信息的所有信息进行下一个字符的匹配;或者,
当目的状态信息存储在片外存储器时,从片外存储器中读取该目的状态 8信息的一条信息进行下一个字符的匹配。
上述字符串匹配方法,对状态信息进行分类,针对不同种类的状态信息 采用不同的存储方法,并利用存储的状态信息进行字符串匹配。本发明实施 例既压缩了整个状态信息的存储空间,使之能够满足当前存储器件的容量限 制,又保证了在进行字符串匹配时,有较高的处理性能。
如图2所示,为本发明实施例提出的一种字符串匹配装置的结构图,包

分类模块21 ,用于根据预设的状态属性阈值对状态信息进行分类。
存储模块22,用于采用不同存储方式存储分类模块21分类后的每类状态 信息,不同存储方式的空间效率不同。
匹配模块23,用于利用存储模块22存储的状态信息对接收的字符串进行 匹配搡作。
其中,匹配模块23可以包括
状态信息获取子模块231,用于根据进行匹配操作的表示规则信息,获得 该表示规则信息对应的第 一类状态信息;
存储地址确定子^^莫块232,用于当接收的字符串的当前字符和状态信息的 当前字符匹配时,根据状态信息的当前字符和当前状态确定目的状态的存储 地址;
信息读取子模块233,用于根据所述存储地址确定子模块232确定的目的 状态的存储地址,确定目的状态信息的存储位置,并根据该存储位置读取目 的状态信息;
字符比较子模块234,用于根据信息读取子模块233读取的目的状态信息 进行下一个字符的匹配。
上述字符串匹配装置,分类模块21对状态信息进行分类,指示存储模块 22针对不同的状态信息采用不同存储方式,进而匹配模块23可以利用存储模 块22存储的状态信息对接收的字符串进行匹配操作,不仅压缩了整个状态信 息的存储空间,使之能够满足当前存储器件的容量限制,又提高了字符串匹 配操作的处理速度。
9如图3所示,为本发明实施例提出的另一种字符串匹配装置的结构图,本 实施例以数据寺艮文作为字符串的实例进行说明。
本实施例中,预先设定一个转移边个数阈值,分类模块21将DFA状态 的转移边数目和该转移边个数阈值进行比较,将状态信息分为非紧凑状态信 息和紧凑状态信息。例如可以将小于该转移边个数阈值的状态信息分为紧 凑状态信息;将大于该转移边个数阈值的状态信息分为非紧凑状态信息。
当然本发明实施例并不局限于此,如何进行分类,分类的个数并不影响 本发明实施例的实现。
存储模块22具体可以在BRAM31、 DRAM32和SRAM33上实现,其中, BRAM 31用于存储与DFA相关的部分数据,包括状态机緩存模块311和状态机 信息存储模块312,其中,状态机緩存模块311保存最近访问过的DFA信息, 也可以根据访问频度,保存经常访问的DFA信息。如果緩存命中,可以避免 从DRAM中读取DFA,提高装置的性能。
状态机信息存储模块3112保存每一个DFA在DRAM中的起始存储地址和 大小,在每次需要装入DFA紧凑状态时使用。
DRAM 32,用于存储紧凑状态信息。
SRAM 33,用于存储非紧凑状态信息。
本实施例中,匹配模块23具体可以在引擎34上实现,引擎34是整个字符 串匹配装置的核心和控制模块,引擎34包括报文緩存模块341、比较器342和 控制器343。
报文緩存模块341,用于接收需要进行DFA匹配操作的数据报文,以供后 续进行字符比较;
比较器342,用于从报文緩存模块341中取出单个字符,用于和DFA状态 的转移边上的字符进行比较,确定是否是匹配状态,实现字符比较子模块234 的功能;或确定通过当前字符可以迁移到的目的状态的存储地址,实现存储 地址确定子模块232的功能;
控制器343主要有以下几个作用
(1)在接收到一个新报文和需要匹配的规则编号时,根据规则编号在状
10态机緩存模块311中或是DRAM 32上查找该规则对应的DFA的所有紧凑状态, 将不在状态机緩存中的紧凑状态从DRAM装入到状态机緩存模块311中;
(2 )在匹配过程中,根据比较器342产生的目的状态信息的存储地址, 从状态机緩存模块31 l存储的当前状态机或SRAM 33中获取需要比较的转移 边信息,实现信息读取子模块233的功能;
(3)向外围模块(如以太网口、片外存储器)的控制模块发出读写等控 制信号。
其中,BRAM31和引擎34可以集成在一个可编程逻辑器件,例如FPGA 上;DRAM32和SRAM33可以集成在一个片外存4渚器上。
本发明实施例提供的字符串匹配装置,在用可编程逻辑器件例如FPGA 实现基于DFA的正则表达式匹配装置时,既有效存储了所有的DFA,又能保 证该字符串匹配装置对报文匹配进行高速处理。
本发明实施例以状态属性为转移边数目为例对具体实现时的操作进行详 细i兌明。
本发明实施例首先设定一个转移边个数阈值,将DFA状态的转移边数目 和该转移边个数阈值进行比较,将状态信息分为非紧凑状态信息和紧凑状态 信息。在装置初始化时,将紧凑状态信息存储在DRAM32中,将非紧凑状态 信息存储在SRAM33中。
假定设定的转移边个数阈值为8,可以设置BRAM31中的嵌入式内存池的 个数为8,由于状态本身的信息需要占用l个内存池单元,剩下的7个内存池单 元用于存储状态信息对应的转移边。例如有4条转移边的状态会占用连续的 5个内存池单元。从状态信息对应的内存池单元开始,连续8个内存池单元同 时依次送往比较器342进行比较,由比较器342决定哪条转移边是有效的。对 于转移边数目在249-255之间的状态,可以先对转移边数目进行取反,减少转 移边,将其转移边数目转换到l-7之间。例如[Aabc]这样的正则表达式会产生 253条转移边,只要存储a、 b、 c三个字符对应的转移边,在转移边上加上一个 "不相等有效"标记,就可以节省大量存储空间。
本发明实施例在对转移边信息进行存储,通过编译工具生成DFA时,直接将目的状态编号替换成目的状态的存储地址,采用直接寻址方式,简化了 引擎获得状态信息的过程。
进行匹配操作前,引擎34根据规则编号将存在DRAM32中的信息一次读 入到BRAM 31中,在匹配时引擎34可以 一次从BRAM 31中读取一个紧凑状态 的所有转移边信息并进行比较;引擎34以特定字符作为索引直接读取非紧凑 状态的转移边信息进行比较。
图3中给出的BRAM31、 DRAM32、 SRAM33只是给出了本发明实现存 储的一种实施例,但本发明实施例并不局限于此。本发明实施例不限定使用 何种存储器件,或者是否使用同一种存储器件来存储两种状态。使用的存储 器件不同,并不影响本发明实施例的实现。同样,采用不同的器件(如ASIC、 其他存储器件),或者增加实现其他功能的模块,改变模块的名称和模块间 交互的信息,也不会影响本发明实施例的实现。
上述字符串匹配装置的工作流程示意图如图4所示,具体包括
步骤S401,引擎34初始化,将所有DFA的非紧凑状态信息存储到SRAM33 中,并将所有DFA的紧凑状态信息存储到DRAM 32中。
步骤S402,引擎34通过网口控制模块(图3中省略)接收需要匹配的数据 报文和规则编号,将该数据报文存储在报文緩存模块341中,并将需要匹配的 规则编号送给控制器343。
步骤S403,控制器343根据规则编号查询状态机信息存储模块312,获得 与该规则编号对应的DFA的紧凑状态信息在DRAM32上的起始地址和大小。
步骤S404,控制器343检查所述起始地址对应的状态信息是否在状态机緩 存模块311中。如果该状态信息在状态机緩存模块311中,则执行步骤S406; 如果该状态信息不在状态机緩存模块311中,则执行步骤S405。
步骤S405,控制器343根据紧凑状态信息在DRAM32上的起始地址和大 小,在DRAM32中查找DFA对应的紧凑状态信息,并将该DFA的所有紧凑状 态信息加载到状态机缓存模块311中,执行步骤S406。
步骤S406,控制器343将该起始地址设置为目的地址,从状态机緩存模块 311中读取起始状态信息作为当前状态送给比较器342;同时控制器343通知比较器342从报文緩存模块341中取数据报文准备进行比较,执行步骤S407。
步骤S407,比较器342判断当前状态的匹配标记,如果是匹配状态则设置 比较结果为匹配,跳转到步骤S413;否则执行步骤S408。
步骤S408,比较器342比较数据报文的当前字符和当前状态的转移边信息 中的字符是否匹配。
如果当前状态信息来自状态机緩存模块311 ,比较器342将数据报文的当 前字符和该状态信息的所有转移边信息中的字符同时进行比较;如果当前状 态信息来自SRAM 33,比较器342将该数据报文的当前字符和转移边信息中的 字符进行比较。如果该数据报文的当前字符与转移边信息中的字符不能匹酉己, 设置比较结果为不匹配,跳转到步骤S413;如果该数据报文的当前字符与转 移边信息中的字符能够匹配,则才艮据该转移边信息中的字符和当前状态确定 目的状态的存储地址,并将该目的状态的存储地址发送给控制器343,执行步 骤S409。
步骤S409,控制器343根据目的状态的存储地址,判断目的状态信息是否 存储在状态緩存模块311中。当目的状态信息存储在状态緩存模块311时,执 行步骤S410;当目的状态信息存储在SRAM33时,执行步骤S411。
步骤S410,控制器343从状态机緩存模块311中一次读取目的状态的匹配 标记和所有转移边信息作为当前状态,执行步骤S412。
步骤S411,控制器343从SRAM33中读取目的状态的匹配标记和对应当前 字符的一条转移边信息作为当前状态,执行步骤S412。
步骤S412,如果当前字符已经是数据报文的最后一个字符,则设置比较 结果为不匹配,跳转到步骤S413;否则取数据报文的下一个字符作为当前字 符,跳转到步骤S407。
步骤413,流程结束,输出比较结果。该比较结果具体可以为接收的数 据报文与输入的规则编号所对应的规则匹配或不匹配。
上述步骤只是作为一种实施例来说明利用分类状态信息进行字符串匹配 的可行性,具体实现时有可能对其中的步骤进行调整,如增加或删除一些步 骤,或调整某些步骤中所做的工作。
13上述字符串匹配方法和装置,对状态机的状态进行统计观察,针对不同 的状态采用不同的存储方法,既压缩了整个报文匹配空间,使之能够满足当 前存储器件的容量限制,又保证了整个装置在进行^^艮文匹配操作时能够有较 高的处理性能。
如图5所示,为本发明实施例状态信息的编译方法的流程图,包括 步骤S501,将正则表达式规则转换为状态机。
步骤S502,扫描状态机的每一个状态信息,才艮据预设的状态属性阈值对 该状态信息进行分类。
步骤S503,采用不同存储方式存储分类后的每类状态信息,不同存储方 式的空间效率不同。
如图6所示,为本发明实施例状态信息的编译工具的结构图,包括
转换模块61,用于将正则表达式规则转换为状态机;
分类模块62,用于扫描转换模块61转换的状态机的每一个状态信息,根 据预设的状态属性阈值对该状态信息进行分类;
存储模块63,用于采用不同存储方式存储分类后的每类状态信息,不同 存储方式的空间效率不同。
本发明实施例中以转移边个数作为状态属性,用来区分状态。在实际实 现时,其他的状态属性,比如状态的访问频度、状态和开始状态间的距离等 也可以作为区分状态的依据。也可以将多个状态属性组合起来作为区分状态 的依据。使用不同的状态属性,或者使用状态属性的个数不同,不影响本发 明实施例的实现。
在实际应用中,状态不仅包括转移边属性字段,还包括其他的属性字段, 比如标识是否为匹配状态的标记字段等。这些信息是完整的状态必须具有的, 在不同应用中可能有所区别。因为这些信息和本发明用于分类的状态属性无 关,在说明书中省略了。
本发明实施例中将状态按照转移边数区分成两类,^f旦是本发明实施例并 不局限于此,分类数目的不同并不影响本发明实施例的实现。
本发明实施例对不同状态的信息使用不同的存储方式进行存储,对紧凑
14状态信息使用空间效率较高的存储方式进行存储,以达到节省存储空间的目 的。实施例中可以采用邻接表的形式来存储紧凑状态信息,也可以使用其他 的压缩方法来存储紧凑状态信息,比如将正则表达式中的字符分类替换为特 殊编码字符,或者将基于字符比较的状态机划分为基于比特位或比特位的组 合进行比较的多个状态机以减少所需存储空间。因使用其他存储方法造成的 存储格式的不同,不影响本发明实施例的实现。
本发明实施例提出的字符串匹配方法还可应用于网络环境下高速对数据
报文进行匹配的情况,在搜索引擎、数据库^r索、自然语言理解等其他使用 状态机的场景中,状态机一般不是用作字符比较,但是上述场景中的状态机 都可以分为"当前状态"和"目的状态"两种,也都有在满足一定条件下发 生从"当前状态"到"目的状态"进行状态迁移的行为。因此本发明实施例 的技术方案同样适用于上述场景。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发 明可以通过硬件实现,也可以借助软件加必要的通用^5更件平台的方式来实现。 基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软 件产品可以存储在一个非易失性存储介质(可以是CD-ROM, U盘,移动硬 盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服 务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的 模块或流程并不 一 定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述 进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一 个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆 分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此, 任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1、一种字符串匹配方法,其特征在于,包括根据预设的状态属性阈值对状态信息进行分类;采用不同存储方式存储分类后的每类状态信息,所述不同存储方式的空间效率不同;利用存储的状态信息对接收的字符串进行匹配操作。
2、 如权利要求1所述字符串匹配方法,其特征在于,所述利用存储的状 态信息对接收的字符串进行匹配操作包括根据进行匹配操作的表示规则信息,获得所述表示规则信息对应的状态 信息;当所述字符串的当前字符和所述状态信息的当前字符匹配时,才艮据所述 状态信息的当前字符和当前状态确定目的状态的存储地址;根据所述目的状态的存储地址,确定所述目的状态信息的存储位置,并 根据所述存储位置读取所述目的状态信息进行下一个字符的匹配。
3、 如权利要求2所述字符串匹配方法,其特征在于,所述根据存储位置 读取所述目的状态信息进行下一个字符的匹配具体包括当所述目的状态信息存储在片内存储器时,从所述片内存储器中读取所 述目的状态信息的所有信息进行下一个字符的匹配;或者,当所述目的状态信息存储在片外存储器时,从所述片外存储器中读取所 述目的状态信息的一条信息进行下一个字符的匹配。
4、 如权利要求1所述字符串匹配方法,其特征在于,所述状态属性具体 为转移边数目和状态信息的访问频度,以及当前状态和开始状态间的距离 中的一种或多种。
5、 一种字符串匹配装置,其特征在于,包括分类模块,用于根据预设的状态属性阔值对状态信息进行分类; 存储模块,用于采用不同存储方式存储所述分类模块分类后的每类状态信息,所述不同存储方式的空间效率不同;匹配模块,用于利用所述存储模块存储的状态信息对接收的字符串进行匹配操作。
6、 如权利要求5所述字符串匹配装置,其特征在于,所述匹配模块包括 状态信息获取子模块,用于根据进行匹配操作的表示规则信息,获得所述表示规则信息对应的第一类状态信息;存储地址确定子模块,用于当所述接收的字符串的当前字符和状态信息 的当前字符匹配时,才艮据状态信息的当前字符和当前状态确定目的状态的存 储地址;信息读取子模块,用于根据所述存储地址确定子模块确定的目的状态的 存储地址,确定所述目的状态信息的存储位置,并根据所述存储位置读取目 的状态信息;字符比较子模块,用于根据所述信息读取子模块读取的目的状态信息进 行下一个字符的匹配。
7、 一种状态信息的编译方法,其特征在于,包括 将正则表达式规则转换为状态机;扫描状态机的每一个状态信息,根据预设的状态属性阈值对所述状态信 息进行分类;采用不同存储方式存储分类后的每类状态信息,所述不同存储方式的空 间效率不同。
8、 如权利要求7所述状态信息的编译方法,其特征在于,所述状态属性 具体为转移边数目和状态信息的访问频度,以及当前状态和开始状态间的 距离中的一种或多种。
9、 一种状态信息的编译工具,其特征在于,包括 转换模块,用于将正则表达式规则转换为状态机;分类模块,用于扫描所述转换模块转换的状态机的每一个状态信息,根 据预设的状态属性阈值对所述状态信息进行分类;存储模块,用于采用不同存储方式存储分类后的每类状态信息,所述不 同存储方式的空间效率不同。
全文摘要
本发明实施例公开了一种字符串匹配方法和装置,所述字符串匹配方法包括根据预设的状态属性阈值对状态信息进行分类;采用不同存储方式存储分类后的每类状态信息,所述不同存储方式的空间效率不同;利用存储的状态信息对接收的字符串进行匹配操作。本发明实施例对状态信息进行分类,针对不同的状态采用不同的存储方法,既压缩了整个状态信息的存储空间,使之能够满足当前存储器件的容量限制,又保证了在进行字符串匹配操作时能够有较高的处理速度。
文档编号G06F17/30GK101650718SQ20081014743
公开日2010年2月17日 申请日期2008年8月15日 优先权日2008年8月15日
发明者勇 王, 浩 王, 赵玉超 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1