CN102301342B - 正则表达式匹配方法和系统及查找装置 - Google Patents
正则表达式匹配方法和系统及查找装置 Download PDFInfo
- Publication number
- CN102301342B CN102301342B CN200980155222.8A CN200980155222A CN102301342B CN 102301342 B CN102301342 B CN 102301342B CN 200980155222 A CN200980155222 A CN 200980155222A CN 102301342 B CN102301342 B CN 102301342B
- Authority
- CN
- China
- Prior art keywords
- character string
- data stream
- word
- hash
- tagged word
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
Abstract
本发明公开了一种正则表达式匹配方法和系统及查找装置。该方法包括将待匹配的数据流进行字符串过滤,当所述数据流中的关键字与预先设定的特征字具有至少一相同特征时,则表明所述数据流通过字符串过滤;将通过字符串过滤的数据流进行正则表达式过滤。本发明实施例中的字符串过滤过程是当所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集时,即表明所述数据流通过字符串过滤,无需保存关键字,也不需要进一步比较关键字和特征字,可以节省存储空间,提高性能。
Description
技术领域
本发明涉及信息处理技术,特别涉及一种正则表达式匹配方法和系统及查找装置。
背景技术
随着IP网络承载业务的日益丰富、网络安全需求的日益重要,数据通信设备仅仅识别传输控制协议/国际协议(Transfer ControlProtocol/Internet Protocol,TCP/IP)协议族四层和四层以下的信息是不够的。深度报文识别(Deep Packet Inspection,DPI)技术可以实现报文的深层解析,DPI的工作过程是报文静荷的数据流和特征字库比较的过程,通过判断报文静荷是否与特征字库中的一个或多个匹配,进而进行相应的处理。其中匹配可以分为字符串匹配和正则表达式匹配。现有可以证明用正则表达式匹配可以使DPI效率更高,但是,正则表达式匹配的运算复杂度与待匹配的报文的长度成正比,当报文的长度较长时,正则表达式匹配的运算复杂度较高。
现有解决方案之一是采用改进的正则表达式匹配方法,流程大致如下:对待匹配的报文的数据流首先进行字符串过滤,对通过字符串过滤的数据流再进行正则表达式过滤,每个过滤过程中采用对应的字符串匹配或者正则表达式匹配采用的算法。这样就相当于对报文首先进行分组,而每个分组的长度较短,对应的正则表达式较少,相比于将整个报文整体进行正则表达式过滤,可以降低运算复杂度。现有技术中,在字符串过滤时采用的是精确匹配的方法,即只有在待匹配的数据流中的关键字与特征字完全一致时才能通过字符串过滤。这种精确匹配的方式需要保存待匹配的数据流中的关键字,并可能需要进一步比较关键字和特征字。
发明人在实现本发明的过程中发现现有技术至少存在如下问题:现有技术需要保存数据流中的关键字,占用较多的空间;需要进一步比较关键字和特征字时性能会下降。
发明内容
本发明提供一种正则表达式匹配方法和系统及查找装置,解决现有需要保存关键字造成的占用空间较大,及需要进一步比较关键字和特征字造成的性能下降问题。
本发明实施例提供了一种正则表达式匹配方法,包括:
将待匹配的数据流进行字符串过滤,当所述数据流中的关键字与预先设定的特征字具有至少一相同特征时,则表明所述数据流通过字符串过滤;
将通过字符串过滤的数据流进行正则表达式过滤。
本发明实施例提供了一种查找装置,包括:
字符串过滤模块,用于将待匹配的数据流进行字符串过滤,当所述数据流中的关键字与预先设定的特征字具有至少一相同特征时,则表明所述数据流通过字符串过滤;
正则表达式过滤模块,用于将通过字符串过滤的数据流进行正则表达式过滤。
本发明实施例提供了一种正则表达式匹配系统,包括上述的查找装置,还包括更新装置,所述更新装置包括:
划分模块,用于将输入规则划分为特征字和正则表达式;
字符串规则库,用于根据所述特征字得到,所述字符串过滤模块具体用于根据所述字符串规则库进行字符串过滤;
正则表达式规则库,用于保存所述正则表达式,所述正则表达式过滤模块具体用于根据所述正则表达式规则库进行正则表达式过滤。
由上述技术方案可知,本发明实施例中的字符串过滤过程是当所述数据流中的关键字与预先设定的特征字具有相同的特征时,而无须两者完全相同,即表明所述数据流通过字符串过滤,因此无需保存关键字,也不需要进一步比较关键字和特征字,可以节省存储空间,提高性能。
附图说明
图1为本发明实施例参考的布隆过滤器的初始化状态的结构示意图;
图2为本发明实施例参考的布隆过滤器置位后的结构示意图;
图3为本发明实施例参考的布隆过滤器判定时的结构示意图;
图4为本发明第一实施例的方法流程示意图;
图5为本发明第二实施例的方法流程示意图;
图6为本发明第二实施例中初始化字符串规则库的方法流程示意图;
图7为本发明第二实施例中字符串规则库的添加流程的方法流程示意图;
图8为本发明第二实施例中字符串规则库的删除流程的方法流程示意图;
图9为本发明第二实施例中的字符串过滤的方法流程示意图;
图10为本发明第一实施例中进行正则表达式过滤的方法流程示意图;
图11为本发明第三实施例的查找装置的结构示意图;
图12为本发明第四实施例的系统的结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
为了更好地理解本发明实施例,下面先介绍一下本发明实施例参考的布隆过滤器(Bloom Filter)技术。
布隆过滤器是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。布隆过滤器可能会把不属于这个集合的元素判定为属于这个集合,但不会把属于这个集合的元素判定为不属于这个集合。在能容忍低错误率的应用场合下,布隆过滤器通过极少的错误换取了存储空间的极大节省。
图1为本发明实施例参考的布隆过滤器的初始化状态的结构示意图。参见图1,在初始状态时,布隆过滤器是一个包含m位的位数组,每一位都置为0。
图2为本发明实施例参考的布隆过滤器置位后的结构示意图。为了表达S={x1,x2,…,xn}这样一个n个元素的集合,布隆过滤器使用k个相互独立的哈希(hash)函数,它们分别将集合中的每个元素映射到{1,...,m}的位置范围中。对任意一个元素x,第i个哈希函数映射的位置hi(x)中的数值就会被置为1(1≤i≤k)。当一个位置中的数值多次被置为1时,那么只有第一次会起作用,后面几次将没有任何效果。例如,参见图2,本实施例以k=3,且有两个哈希函数选中同一个位置(从左边数第五位)为例。
图3为本发明实施例参考的布隆过滤器判定时的结构示意图。在判断y是否属于这个集合(S)时,首先对y进行k次哈希运算,如果所有hi(y)(1≤i≤k)的位置都是1,那么就认为y是这个集合中的元素,否则就认为y不是这个集合中的元素。例如,参见图3,y1不是这个集合中的元素,y2是这个集合中的元素。当然,由于不同元素也可能被哈希到同一个位置,因此y2可能事实上属于这个集合,也可能事实上不属于这个集合,是被误判属于这个集合的。
在现有技术精确字符串过滤时,当确定一个元素映射的位置均为1后,为了避免误判,还需要继续进行关键字和特征字的比较。即现有技术中,对应上述的布隆过滤器的某一位下挂一个链表,该链表用于保存特征字(例如上述的集合S),当确定一个关键字映射的位置均为1后,还需要保存该关键字(例如y2),之后,再比对y2和集合S,判定y2是否确实属于S,当y2确实属于S时,才表明y2通过字符串过滤。
但是,由于正则表达式匹配过程是包括字符串过滤和正则表达式过滤的,对于通过字符串过滤的数据流还要进行后续的正则表达式过滤,而后续的正则表达式过滤已被证明效率及精度都很高,因此,之前的字符串过滤是无需这样精确的,并且精确的字符串过滤需要占用大量的存储空间及多次的查找,以大空间占用和性能下降换取意义不大的精确字符串过滤是不适合的。
本发明实施例正是为了克服正则表达式匹配时,精确字符串过滤存在的上述问题。本发明实施例主要基于如下的思路:
1、本发明实施例同样采用字符串过滤和正则表达式过滤结合的方式进行正则表达式匹配。
由于将待匹配的数据流整体进行正则表达式过滤时,运算量较大。例如,从理论的最坏情况看,长度为n的正则表达式用非确定性有限状态机(Non-deterministic Finite Automata,NFA)表示的空间复杂度是0(n),时间复杂度是0(n2),用确定性有限状态机(Deterministic Finite Automata,DFA)表示的空间复杂度是0(2n),时间复杂度是0(1)。而字符串过滤和正则表达式过滤结合的方式具有如下优点:
首先,字符串过滤的处理比较简单;
其次,字符串过滤可以将正则表达式分组,一个组只对应少数几个正则表达式,对于snort(一种网络工具,可以用于协议分析),大多数的组只有一个正则表达式,自然的降低了正则表达式处理的复杂度;
再次,只有匹配上字符串部分的报文或报文片段才需要继续进行正则表达式匹配,减轻了正则表达式匹配的压力,有助于提高性能。
2、本发明实施例在字符串过滤时并不采用精确过滤,即并不需要关键字与特征字完全一致,因此不需要保存关键字和进行关键字与特征字的比对,因此可以节省存储空间,提高性能。
图4为本发明第一实施例的方法流程示意图,包括:
41:查找装置将待匹配的数据流进行字符串过滤,当所述数据流中的关键字与预先设定的特征字具有至少一相同特征时,则表明所述数据流通过字符串过滤;
42:查找装置将通过字符串过滤的数据流进行正则表达式过滤。
本实施例中字符串过滤过程是当所述数据流中的关键字与预先设定的特征字具有相同的特征时,而无须两者完全相同,即表明所述数据流通过字符串过滤,因此无需保存关键字,也不需要进一步比较关键字和特征字,可以节省存储空间,提高性能。
在字符串过滤及正则表达式过滤时可以根据预先得到的规则库进行,因此,本发明实施例在第一实施例的基础上进一步包括在数据流匹配之前得到对应的规则库的过程。具体可以如第二实施例所述:
图5为本发明第二实施例的方法流程示意图,包括:
51:更新装置根据输入规则得到字符串规则库和正则表达式规则库。
由于正则表达式匹配的效率更高,因此目前通常的输入规则都是正则表达式,为了进行字符串匹配,需要在为正则表达式的输入规则中提取出字符串,利用提取出的字符串进行字符串匹配,其中,提取出的字符串称为特征字。具体实施例中,例如,假定待匹配的数据流的关键字的最大长度为L,则可以将为正则表达式的输入规则中的第一个长度为L的字符串作为特征字,如果输入规则中不能提取出长度为L的字符串,也可以将长度最接近L的字符串作为特征字。
之后,用特征字构建字符串规则库,用提取特征字后的输入规则构建正则表达式规则库。其中,用特征字构建字符串规则库的流程可以是一个动态维护的流程,即首先初始化字符串规则库,之后,可以动态添加或者删除特征字。
52:查找装置将待匹配的数据流,根据字符串规则库进行字符串过滤。当所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集时,表明所述数据流通过字符串过滤。
53:查找装置将通过字符串匹配的数据流,根据正则表达式规则库进行正则表达式过滤。
本实施例中的字符串过滤过程是当所述数据流的关键字哈希映射的位置属于特征字哈希映射的位置时,即表明所述数据流通过字符串过滤,无需保存关键字,也不需要进一步比较关键字和特征字,可以节省存储空间,提高性能。
其中,可以参考布隆过滤器的方法用特征字构建并动态维护字符串规则库。但是,现有布隆过滤器的位数组的每位只能是0或1,当多个特征字映射到同一位时,该位仍旧只能是1,当需要删除该多个特征字中的任一个时,该映射的位置处的处理会出现问题。例如,当删除某一特征字时,该特征字原来映射的位置应该被置0,而不再是1,但是,由于还存在其他的特征字映射到该位,因此还不能修改为0,这样便会存在矛盾,难以确定该位是置0还是1。
为了解决上述矛盾的问题,本发明实施例还可以对应布隆过滤器的位数组设置一个计数数组,该计数数组的每一个计数元素分别与布隆过滤器的位数组的每一位对应,用于计算映射到对应位的特征字的个数。例如,布隆过滤器的位数组为m位(即哈希运算得到的哈希值为1~m),则构建的计数数值包括m个计数元素,每个计数元素的位宽为其中表示向上取整,N为特征字的个数。之所以将每个计数元素的位宽设置为是可以保证所有的特征字都映射到某一位这种极端情况。在实施例时通常特征字的个数不是很多,通常每个计数元素的位宽取为16位(bit)或32位即可。
在上述分析的基础上,本发明实施例的维护字符串规则库的流程可以包括初始化流程、添加流程和删除流程。具体如下:
图6为本发明第二实施例中初始化字符串规则库的方法流程示意图,本包括:
61:开始。
62:将计数数组的计数元素置0。
63:将计数数组的计数元素对应的链表指针初始化为空指针。
类似现有布隆过滤器用位元素下挂链表的方式,本实施例用计数元素下挂链表,该链表用于保存特征字,当然,该链表也可以下挂在位数组的位元素下。
64:结束。
图7为本发明第二实施例中字符串规则库的添加流程的方法流程示意图,包括:
701:开始。
702:将待添加的特征字用k个相互独立的哈希函数进行k次哈希运算,得到M个哈希值。其中,k的数值及哈希函数可以根据实际需要设定。
703:在M个哈希值中确定一个用于下挂链表,该链表用于保存特征字,例如,将得到的M个哈希值中的最小值确定为用于下挂链表的地址。
704:遍历该最小值下挂的链表中是否有该特征字,若有,执行705,否则,执行706。
705:返回“重复添加”信息。之后,执行710。
步骤706:将该特征字添加到该链表中。
707:将该M个哈希值对应的计数元素的值增加1。例如,M个哈希值分别为1、3、5,则将计数数组的第1、3、5个计数元素的值+1。
708:判断是否存在某一计数元素的值由0变为非0(例如1),若是,执行709,否则,执行710。
709:将该计数元素对应的位元素的值置为1。其中,位元素为位数组中的元素,位数组为布隆过滤器。
710:结束。
对于每个特征字都执行上述的流程,从上述流程可知,计数元素的值可能为0~N中的任一个值,其中,N为特征字的个数。但是,位元素的值只能是0或1,与布隆过滤器类似,只有第一次映射起作用。
图8为本发明第二实施例中字符串规则库的删除流程的方法流程示意图,包括:
801:开始。
802:将待删除的特征字用k个相互独立的哈希函数进行k次哈希运算,得到M个哈希值。
803:在M个哈希值中确定一个用于下挂链表,该链表用于保存特征字,例如,将得到的M个哈希值中的最小值确定为用于下挂链表的地址。
804:遍历该最小值下挂的链表中是否有该特征字,若有,执行806,否则,执行805。
805:返回“删除不存在的特征字”信息。之后,执行810。
806:将该特征字从该链表中删除。
807:将该M个哈希值对应的计数元素的值减1。例如,M个哈希值分别为1、3、5,则将计数数组的第1、3、5个计数元素的值-1。
808:判断计数元素的值是否由非0变为0,若是,执行809,否则,执行810。
809:将该计数元素对应的位元素的值置为0。其中,位元素为位数组中的元素,位数组为布隆过滤器。例如,计数数组的第1个计数元素由非0变为0(由于计数元素的值是依次减1的,因此这里通常是由1变为0),则将位数组中的第1个位元素置0。也就是说,当存在多个特征字映射到同一个位置时,只有在该多个特征字都被删除后,该对应的位置上的值才被置0,否则保持为1。
810:结束。
对于每个特征字都执行上述的流程,从上述流程可知,通过设置计数数组,可以在多个特征字映射到同一个位置时,只有在该多个特征字都被删除后,该对应的位置上的值才被置0,解决现有只有位数组造成的删除冲突问题。
在上述构建了字符串规则库的基础上,本发明实施例在字符串过滤时便可以根据构建的字符串规则库进行字符串过滤。具体可以参见如下实施例:
图9为本发明第二实施例中的字符串过滤的方法流程示意图,包括:
91:开始。
92:查找装置将待匹配的数据流中的关键字(Key)用k个哈希函数进行k次哈希运算,得到一个或多个哈希值。其中,k个哈希函数需要与特征字处理时的k个哈希函数相同。
93:查找装置根据字符串规则库中的位数组,判断该一个或多个哈希值对应的位元素的值是否均为1,若是,执行94,否则,执行95。
根据图7所示的实施例可知,当特征字映射到位数组的某一位时,该位即被置为1,当93中的哈希值对应的位元素的值为1时,表明了该关键字哈希映射的位置属于特征字哈希映射的位置,该关键字将通过字符串过滤。
94:得到该数据流通过字符串过滤。之后,执行96。
在现有技术的精确字符串匹配过程中,当关键字的哈希值对应的位元素均为1时,还不能得到该数据流通过字符串匹配,其还要进一步比较关键值和特征字,只有在关键值和特征字完全相同时,才表明通过字符串匹配。而本实施例无需进行后续的进一步比较的过程,与现有精确字符串匹配相比,本实施例可以称为模糊字符串匹配。由于数据流通过字符串匹配后还要进行正则表达式匹配,而正则表达式匹配的精度较高,在此之前的字符串匹配的精度可以无需太高,之前的字符串匹配主要实现分组的目的,这样可以降低纯粹正则表达式匹配的运算复杂度。并且,本实施例虽然是模糊匹配,但是由于进行了k次哈希运算,在一定程度上是可以提高精度的。
95:得到该数据流未通过字符串过滤。之后,执行96。
96:结束。
本实施例中的字符串过滤过程是当所述数据流的关键字哈希映射的位置属于特征字哈希映射的位置时,即表明所述数据流通过字符串过滤,无需保存关键字,也不需要进一步比较关键字和特征字,可以节省存储空间,提高性能。
上述对字符串过滤的流程进行了描述,当通过字符串过滤的数据流之后要进行正则表达式过滤,其中用于正则表达式过滤的正则表达式为上述提取了特征字后的输入规则。该正则表达式可以保存在片外随机访问存储器(Random Access Memory,RAM)中,具体可以采用动态随机访问存储器(Dynamic Random Access Memory DRAM),也可以采用静态随机访问存储器(Static Random Access Memory SRAM)。并且,正则表达式保存的首地址可以根据对应的特征字的哈希值确定,例如,一个输入规则被划分为了第一特征字和第一正则表达式,则第一正则表达式的首地址A可以采用如下方法确定:利用上述k个哈希函数中的一个或者其他的某一哈希函数(哈希函数H),对该第一特征字进行哈希运算得到哈希值B,之后,根据第一正则表达式的大小确定一个左移的位数b,然后,将B左移b位后得到A。之后,将第一正则表达式保存在以A为首地址的RAM中。
在上述正则表达式保存在片外RAM的基础上,本发明实施例进行正则表达式过滤的流程如下:
图10为本发明第一实施例中进行正则表达式过滤的方法流程示意图,包括:
101:得到通过字符串过滤的数据流。之后,分别执行102和105。
102:对该数据流的关键字再进行一次哈希运算,得到第一哈希地址,该哈希运算采用的哈希函数为保存正则表达式时采用的哈希函数H。
103:对第一哈希地址进行左移,得到第二哈希地址,该左移的位数为保存正则表达式时的b。
104:根据第二哈希地址从片外RAM中得到正则表达式。
105:对该数据流进行延时处理,延时处理的时间与在片外RAM中获取正则表达式的时间相同。
106:用该正则表达式对该数据流进行正则表达式过滤。
其中,进行正则表达式过滤时采用的算法可以为NFA、DFA或者HFA(NFA和DFA的混合算法)。本发明实施例的重点是在正则表达式匹配时处于预匹配阶段的字符串过滤采用上述模糊匹配的方式,而在具体的正则表达式过滤阶段的具体算法则不限定,可以采用现有任何一种(或混合的)正则表达式过滤方法。
图11为本发明第三实施例的查找装置的结构示意图,包括字符串过滤模块111和正则表达式过滤模块112。字符串过滤模块111用于将待匹配的数据流进行字符串过滤,当所述数据流中的关键字与预先设定的特征字具有至少一相同特征时,则表明所述数据流通过字符串过滤;正则表达式过滤模块112用于将通过字符串过滤的数据流进行正则表达式过滤。
具体地,字符串模块可以包括第一单元、第二单元和第三单元;第一单元用于将所述数据流的关键字进行哈希运算,得到关键字的哈希值;第二单元用于判断所述数据流的关键字哈希映射的位置是否为特征字哈希映射的位置的子集;第三单元用于当所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集时,得到所述数据流通过字符串过滤。
本实施例中的字符串过滤过程是当所述数据流中的关键字与预先设定的特征字具有相同的特征时,而无须两者完全相同,即表明所述数据流通过字符串过滤,因此无需保存关键字,也不需要进一步比较关键字和特征字,可以节省存储空间,提高性能。
图12为本发明第四实施例的系统的结构示意图,包括如图11所述的查找装置,即包括字符串过滤模块121和正则表达式过滤模块122,还包括更新模块,该更新模块包括划分模块123、字符串规则库124和正则表达式规则库125。划分模块123用于将输入规则划分为特征字和正则表达式;字符串规则库124用于根据所述特征字得到,所述字符串过滤模块121具体用于根据所述字符串规则库进行字符串过滤;正则表达式规则库125用于保存所述正则表达式,所述正则表达式过滤模块122具体用于根据所述正则表达式规则库进行正则表达式过滤。
具体地,字符串规则库可以包括初始化单元和添加单元;初始化单元用于建立对应特征字的位数组、与位数组对应的计数数组和用于保存特征字的下挂链表;并将所述计数数组中的计数元素均置为0,将指向所述链表的链表指针置为空指针。添加单元用于对待添加的特征字用k个哈希函数进行k次哈希运算,得到待添加的特征字的哈希值;将待添加的特征字的哈希值对应的计数数组中计数元素的值增加1;将从0变为非0的计数元素对应的位元素的值置为1。此时,所述第二单元具体用于对所述数据流的关键字用所述k个哈希函数进行哈希运算后得到关键字的哈希值,当所述关键字的哈希值对应的位元素的值均为1时,判断得到所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集。
本实施例的字符串规则库还可以包括:删除单元,用于对待删除的特征字用所述k个哈希函数进行k次哈希运算,得到待删除的特征字的哈希值;将待删除的特征字的哈希值对应的计数数组中计数元素的值减1;将从非0变为0的计数元素对应的位元素的值置为0。
本实施例中的字符串过滤过程是当所述数据流中的关键字与预先设定的特征字具有相同的特征时,而无须两者完全相同,即表明所述数据流通过字符串过滤,因此无需保存关键字,也不需要进一步比较关键字和特征字,可以节省存储空间,提高性能。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。
Claims (14)
1.一种正则表达式匹配方法,其特征在于,包括:
将待匹配的数据流进行字符串过滤,当所述数据流中的关键字与预先设定的特征字具有至少一相同特征时,则表明所述数据流通过字符串过滤;
将通过字符串过滤的数据流进行正则表达式过滤;
在所述将待匹配的数据流进行字符串过滤之前,还包括:
根据输入规则得到字符串规则库;
所述根据所述输入规则得到所述字符串规则库包括:
在所述输入规则中提取出特征字;
建立对应特征字的位数组、与位数组对应的计数数组和用于保存特征字的下挂链表;
根据所述计数数组、位数组和链表得到字符串规则库。
2.根据权利要求1所述的方法,其特征在于,
所述具有至少一相同特征为:所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集;
所述将待匹配的数据流进行字符串过滤,当所述数据流中的关键字与预先设定的特征字具有至少一相同特征时,则表明所述数据流通过字符串过滤包括:
将所述数据流的关键字进行哈希运算,得到关键字的哈希值;
判断所述数据流的关键字哈希映射的位置是否属于特征字哈希映射的位置;
当所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集时,得到所述数据流通过字符串过滤。
3.根据权利要求2所述的方法,其特征在于,还包括:
根据所述输入规则得到正则表达式规则库;所述将待匹配的数据流进行字符串过滤包括:根据所述字符串规则库,将待匹配的数据流进行字符串过滤;
所述将通过字符串过滤的数据流进行正则表达式过滤包括:根据所述正则表达式规则库,将通过字符串过滤的数据流进行正则表达式过滤。
4.根据权利要求3所述的方法,其特征在于,所述得到字符串规则库包括初始化字符串规则库,
所述初始化字符串规则库包括:
将所述计数数组中的计数元素均置为0;
将指向所述链表的链表指针置为空指针。
5.根据权利要求4所述的方法,其特征在于,所述得到字符串规则库还包括在字符串规则库中添加特征字的流程,
所述在字符串规则库中添加特征字的流程包括:
对待添加的特征字用k个哈希函数进行k次哈希运算,得到待添加的特征字的哈希值;
将待添加的特征字的哈希值对应的计数数组中计数元素的值增加1;
将从0变为非0的计数元素对应的位元素的值置为1;
所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集具体为:所述数据流的关键字用所述k个哈希函数进行哈希运算后得到的哈希值对应的位元素的值均为1。
6.根据权利要求5所述的方法,其特征在于,还包括:
在所述待添加的特征字的哈希值中确定一个用于下挂所述链表;
当所述链表中没有所述待添加的特征字时,将所述待添加的特征字添加到所述链表中。
7.根据权利要求5所述的方法,其特征在于,所述得到字符串规则库还包括在字符串规则库中删除特征字的流程,
所述在字符串规则库中删除特征字的流程包括:
对待删除的特征字用所述k个哈希函数进行k次哈希运算,得到待删除的特征字的哈希值;
将待删除的特征字的哈希值对应的计数数组中计数元素的值减1;
将从非0变为0的计数元素对应的位元素的值置为0。
8.根据权利要求7所述的方法,其特征在于,还包括:
当所述链表中存在所述待删除的特征字时,将所述待删除的特征字从所述链表中删除。
9.根据权利要求1所述的方法,其特征在于,所述将通过字符串过滤的数据流进行正则表达式过滤包括:
获取用于正则表达式过滤的正则表达式;
将所述通过字符串过滤的数据流进行延时处理,所述延时处理的时间与获取正则表达式的时间相同;
用所述正则表达式,对所述通过字符串过滤的数据流进行正则表达式过滤。
10.一种正则表达式匹配装置,其特征在于,包括:
字符串过滤模块,用于将待匹配的数据流进行字符串过滤,当所述数据流中的关键字与预先设定的特征字具有至少一相同特征时,则表明所述数据流通过字符串过滤;
正则表达式过滤模块,用于将通过字符串过滤的数据流进行正则表达式过滤;
所述正则表达式过滤模块还用于在所述字符串过滤模块将所述待匹配的数据流进行字符串过滤之前,在输入规则中提取出特征字;建立对应特征字的位数组、与位数组对应的计数数组和用于保存特征字的下挂链表;根据所述计数数组、位数组和链表得到字符串规则库。
11.根据权利要求10所述的匹配装置,其特征在于,所述具有至少一相同特征为:所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集,所述字符串过滤模块包括:
第一单元,用于将所述数据流的关键字进行哈希运算,得到关键字的哈希值;
第二单元,用于判断所述数据流的关键字哈希映射的位置是否为特征字哈希映射的位置的子集;
第三单元,用于当所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集时,得到所述数据流通过字符串过滤。
12.一种正则表达式匹配系统,其特征在于,包括权利要求11所述的匹配装置,还包括更新装置,所述更新装置包括:
划分模块,用于根据所述输入规则得到正则表达式规则库;
字符串规则库,用于根据所述特征字得到,所述字符串过滤模块具体用于根据所述字符串规则库进行字符串过滤;
正则表达式规则库,用于保存所述正则表达式,所述正则表达式过滤模块具体用于根据所述正则表达式规则库进行正则表达式过滤。
13.根据权利要求12所述的系统,其特征在于,所述字符串规则库包括:
初始化单元,用于将所述计数数组中的计数元素均置为0,将指向所述链表的链表指针置为空指针;
添加单元,用于对待添加的特征字用k个哈希函数进行k次哈希运算,得到待添加的特征字的哈希值;将待添加的特征字的哈希值对应的计数数组中计数元素的值增加1;将从0变为非0的计数元素对应的位元素的值置为1;
所述字符串过滤模块包括第二单元,所述第二单元具体用于对所述数据流的关键字用所述k个哈希函数进行哈希运算后得到关键字的哈希值,当所述关键字的哈希值对应的位元素的值均为1时,判断得到所述数据流的关键字哈希映射的位置是特征字哈希映射的位置的子集。
14.根据权利要求13所述的系统,其特征在于,所述字符串规则库还包括:
删除单元,用于对待删除的特征字用所述k个哈希函数进行k次哈希运算,得到待删除的特征字的哈希值;将待删除的特征字的哈希值对应的计数数组中计数元素的值减1;将从非0变为0的计数元素对应的位元素的值置为0。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2009/072982 WO2011011916A1 (zh) | 2009-07-29 | 2009-07-29 | 正则表达式匹配方法和系统及查找装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102301342A CN102301342A (zh) | 2011-12-28 |
CN102301342B true CN102301342B (zh) | 2014-07-30 |
Family
ID=43528689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980155222.8A Active CN102301342B (zh) | 2009-07-29 | 2009-07-29 | 正则表达式匹配方法和系统及查找装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9390134B2 (zh) |
EP (1) | EP2437173A4 (zh) |
CN (1) | CN102301342B (zh) |
WO (1) | WO2011011916A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9858051B2 (en) * | 2011-06-24 | 2018-01-02 | Cavium, Inc. | Regex compiler |
CN102387050A (zh) * | 2011-12-13 | 2012-03-21 | 曙光信息产业(北京)有限公司 | 一种利用自动机实现报文深度检测的系统和方法 |
CN102523139B (zh) * | 2012-01-06 | 2015-01-14 | 深圳市共进电子股份有限公司 | 高速网络协议深度检测装置及检测方法 |
CN103218379A (zh) * | 2012-01-19 | 2013-07-24 | 北京千橡网景科技发展有限公司 | 用于解析图释的方法及装置 |
CN103365528A (zh) * | 2012-04-02 | 2013-10-23 | 鸿富锦精密工业(深圳)有限公司 | 专利核驳历程显示系统及方法 |
CN103455753B (zh) * | 2012-05-30 | 2016-07-13 | 北京金山安全软件有限公司 | 一种样本文件分析方法及装置 |
CN102880726B (zh) * | 2012-10-23 | 2015-08-05 | 深圳市宜搜科技发展有限公司 | 一种图像过滤方法及系统 |
US9887911B2 (en) | 2013-02-28 | 2018-02-06 | Xaptum, Inc. | Systems, methods, and devices for adaptive communication in a data communication network |
US9208442B2 (en) | 2013-04-26 | 2015-12-08 | Wal-Mart Stores, Inc. | Ontology-based attribute extraction from product descriptions |
CN103631966B (zh) * | 2013-12-18 | 2017-10-10 | 用友网络科技股份有限公司 | 一种可配置的解析多值匹配字段的方法 |
US9542456B1 (en) * | 2013-12-31 | 2017-01-10 | Emc Corporation | Automated name standardization for big data |
CN103957131B (zh) * | 2014-04-11 | 2017-04-12 | 烽火通信科技股份有限公司 | 一种基于有限自动机的深度报文检测方法 |
CN107608981B (zh) * | 2016-07-11 | 2021-11-12 | 深圳市丰驰顺行信息技术有限公司 | 基于正则表达式的字符匹配方法及系统 |
CN106815349B (zh) * | 2017-01-19 | 2021-04-23 | 银联国际有限公司 | 基于哈希算法和正则匹配的时间过滤方法及事件过滤方法 |
CN107122222B (zh) * | 2017-04-20 | 2019-02-19 | 深圳大普微电子科技有限公司 | 一种字符串的搜索系统及方法 |
CN107423084B (zh) * | 2017-04-24 | 2021-02-02 | 武汉斗鱼网络科技有限公司 | 程序修改方法及装置 |
US11057352B2 (en) | 2018-02-28 | 2021-07-06 | Xaptum, Inc. | Communication system and method for machine data routing |
US10965653B2 (en) | 2018-03-28 | 2021-03-30 | Xaptum, Inc. | Scalable and secure message brokering approach in a communication system |
US10805439B2 (en) | 2018-04-30 | 2020-10-13 | Xaptum, Inc. | Communicating data messages utilizing a proprietary network |
US10924593B2 (en) | 2018-08-31 | 2021-02-16 | Xaptum, Inc. | Virtualization with distributed adaptive message brokering |
US10938877B2 (en) | 2018-11-30 | 2021-03-02 | Xaptum, Inc. | Optimizing data transmission parameters of a proprietary network |
US10912053B2 (en) | 2019-01-31 | 2021-02-02 | Xaptum, Inc. | Enforcing geographic restrictions for multitenant overlay networks |
CN109976896B (zh) * | 2019-04-09 | 2021-06-29 | 中国联合网络通信集团有限公司 | 业务排重处理方法和装置 |
CN110096509A (zh) * | 2019-05-16 | 2019-08-06 | 普元信息技术股份有限公司 | 大数据环境下实现历史数据拉链表存储建模处理的系统及方法 |
CN111858902A (zh) * | 2019-12-12 | 2020-10-30 | 马上消费金融股份有限公司 | 正则匹配推荐方法及相关装置 |
CN111736806A (zh) * | 2020-05-14 | 2020-10-02 | 广州三七网络科技有限公司 | 控件注入方法、装置及终端设备 |
CN116150442B (zh) * | 2023-02-23 | 2023-09-15 | 成都卓讯智安科技有限公司 | 一种基于tcam的网络数据检测方法和设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075980A (zh) * | 2006-07-26 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 对通讯系统中的通讯信息进行过滤的方法和过滤系统 |
CN101359325A (zh) * | 2007-08-01 | 2009-02-04 | 北京启明星辰信息技术有限公司 | 一种快速内容分析的多关键词匹配方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE60222575T2 (de) * | 2001-09-12 | 2008-06-26 | Safenet Inc. | Verfahren zur Generierung eines DFA-Automaten, wobei Übergänge zwecks Speichereinsparung in Klassen gruppiert werden |
US7444515B2 (en) * | 2003-08-14 | 2008-10-28 | Washington University | Method and apparatus for detecting predefined signatures in packet payload using Bloom filters |
US20050273450A1 (en) * | 2004-05-21 | 2005-12-08 | Mcmillen Robert J | Regular expression acceleration engine and processing model |
US7539032B2 (en) | 2006-09-19 | 2009-05-26 | Netlogic Microsystems, Inc. | Regular expression searching of packet contents using dedicated search circuits |
US7912808B2 (en) * | 2006-12-08 | 2011-03-22 | Pandya Ashish A | 100Gbps security and search architecture using programmable intelligent search memory that uses a power down mode |
-
2009
- 2009-07-29 WO PCT/CN2009/072982 patent/WO2011011916A1/zh active Application Filing
- 2009-07-29 EP EP09847702A patent/EP2437173A4/en not_active Withdrawn
- 2009-07-29 CN CN200980155222.8A patent/CN102301342B/zh active Active
-
2011
- 2011-12-28 US US13/339,043 patent/US9390134B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075980A (zh) * | 2006-07-26 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 对通讯系统中的通讯信息进行过滤的方法和过滤系统 |
CN101359325A (zh) * | 2007-08-01 | 2009-02-04 | 北京启明星辰信息技术有限公司 | 一种快速内容分析的多关键词匹配方法 |
Non-Patent Citations (2)
Title |
---|
丁晶等.基于正则表达式的深度包检测算法.《计算机应用》.2007,第27卷(第9期), |
基于正则表达式的深度包检测算法;丁晶等;《计算机应用》;20070930;第27卷(第9期);第2184页左栏第2段 * |
Also Published As
Publication number | Publication date |
---|---|
EP2437173A1 (en) | 2012-04-04 |
US9390134B2 (en) | 2016-07-12 |
US20120102055A1 (en) | 2012-04-26 |
WO2011011916A1 (zh) | 2011-02-03 |
CN102301342A (zh) | 2011-12-28 |
EP2437173A4 (en) | 2012-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102301342B (zh) | 正则表达式匹配方法和系统及查找装置 | |
CN101577721A (zh) | 一种索引拆分布鲁姆过滤器及其插入、删除和查询方法 | |
CN102314565B (zh) | 数据匿名化装置和方法 | |
CN102075430B (zh) | 深度报文检测dfa状态转移表的压缩与报文匹配方法 | |
CN102546299B (zh) | 一种在大流量下进行深度包检测的方法 | |
CN102420771B (zh) | 高速网络环境中提高tcp并发连接速度的方法 | |
CN105515997B (zh) | 基于bf_tcam实现零范围扩张的高效范围匹配方法 | |
CN106407224A (zh) | 一种键值存储系统中文件压实的方法和装置 | |
CN103714086A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN104881439A (zh) | 一种空间高效的多模式串匹配方法和系统 | |
CN102253991A (zh) | Url存储方法、网页过滤方法、装置及系统 | |
CN107506310A (zh) | 一种地址查找、关键字存储方法及设备 | |
CN106599091A (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN112131356B (zh) | 一种基于tcam的报文关键字匹配方法和装置 | |
CN101916259B (zh) | 确定自动机状态转换表的空间压缩方法 | |
CN105550220B (zh) | 一种异构系统的取数的方法及装置 | |
CN113794696A (zh) | 一种基于因果模型的网络安全信息处理方法和系统 | |
CN103957012B (zh) | 一种dfa矩阵的压缩方法及装置 | |
CN114722388B (zh) | 一种数据库数据信息安全监视方法 | |
CN112272184B (zh) | 一种工业流量检测的方法、装置、设备及介质 | |
US11940890B2 (en) | Timing index anomaly detection method, device and apparatus | |
CN105791124B (zh) | 报文检测方法及装置 | |
US11501020B2 (en) | Method for anonymizing personal information in big data and combining anonymized data | |
CN106603566B (zh) | 一种数据流的检测方法及设备 | |
CN101848091A (zh) | 数据查找处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |