一种正则表达式的匹配方法和装置制造方法及图纸

技术编号:16456101 阅读:21 留言:0更新日期:2017-10-25 20:37
本发明专利技术公开了一种正则表达式的匹配方法和装置,所述方法为:从用于文本匹配的正则表达式中分割出一个子正则表达式,作为待处理子正则表达式;针对待处理子正则表达式执行如下处理:使用待处理子正则表达式与待匹配文本进行匹配;若匹配到,则获取匹配结果,匹配结束;若未匹配到,则继续从正则表达式中除去该待处理子正则表达式后的剩余部分中分割出一个子正则表达式,作为新的待处理子正则表达式,针对新的待处理子正则表达式返回继续执行所述处理,直至从正则表达式中不能再分割出新的待处理子正则表达式为止,则匹配结束。本方法通过分割正则表达式,用相比于原正则表达式而言较简单的子正则表达式顺序去匹配文本,可以提高匹配速度。

A regular expression matching method and device

The invention discloses a method and a device for matching the regular expression, the method is: from a regular expression for the segmentation of sub text, regular expressions, regular expressions to be treated as a child; needle treat Zi Zhengze expression following: the pending sub regular expression matching and text matching; if the match is obtained, the matching result, the end of the match; if not, to continue from the regular expression to remove the segmented sub regular expression sub regular expression after the remaining part, as to the new sub regular expressions, regular expressions for a new child to return to run the from the regular expression processing, until no longer separate new pending sub regular expressions, the match ended. This method can improve the matching speed by segmenting regular expressions and using simple sub regular expression order to match text compared to the original regular expression.

【技术实现步骤摘要】
一种正则表达式的匹配方法和装置
本专利技术涉及数据处理领域,尤其涉及一种正则表达式的匹配方法和装置。
技术介绍
正则表达式可以用简单的语法描述复杂的数据特征,因此被广泛应用于网络入侵检测、文档内容检索等多个领域。正则表达式的模式匹配主要可以通过确定型有穷自动机(简称:DFA)和非确定型有穷自动机(简称:NFA)两种数据结构来实现。但现有的正则表达式的匹配都存在着各自的缺陷,例如,DFA匹配速度快,但内存占用过高,对于不少复杂的正则表达式规则或者大规模的正则表达式规则集合,DFA会发生状态爆炸。又例如,NFA内存占用小,但匹配速度极慢,在多核或通用处理器平台上根本不能满足实际的网络处理要求。
技术实现思路
本申请提供一种正则表达式的匹配方法和装置,用于解决现有的正则表达式的匹配方法要么会产生大量的中间状态,要么匹配速度慢的问题。本申请第一方面,提供了一种正则表达式的匹配方法,包括:从用于文本匹配的正则表达式中分割出一个子正则表达式,作为待处理子正则表达式;针对所述待处理子正则表达式执行如下处理:使用所述待处理子正则表达式与待匹配文本进行匹配;若匹配到,则获取匹配结果,匹配结束;若未匹配到,则继续从所述正则表达式中除去所述待处理子正则表达式后的剩余部分中分割出一个子正则表达式,作为新的待处理子正则表达式,针对新的待处理子正则表达式返回继续执行所述处理,直至从所述正则表达式中不能再分割出新的待处理子正则表达式为止,则匹配结束。在一个可能的设计中,从用于文本匹配的正则表达式中分割出一个子正则表达式,包括:从用于文本匹配的正则表达式的起始位置开始,从前往后查找第一个不被组元字符包含的或元字符的位置;若查找到,则将所述正则表达式的起始位置到所述第一个不被组元字符包含的或元字符的位置之间的部分作为一个子正则表达式;或,将所述正则表达式的第一个不被组元字符包含的或元字符的位置到所述正则表达式的结束位置之间的部分作为一个子正则表达式;若未查找到,则将所述正则表达式作为一个子正则表达式。在一个可能的设计中,使用所述待处理子正则表达式与待匹配文本进行匹配,包括:在所述待处理子正则表达式包含或元字符和/或组元字符、且包含公有前缀和/或公有后缀时,使用所述公有前缀和/或公有后缀与待匹配文本进行匹配;若匹配不到,则确认所述当前子正则表达式与待匹配文本匹配失败;若匹配到,则从所述待处理子正则表达式中除去所述公有前缀和公有后缀,得到剩余部分,将得到的剩余部分拆分成至少一个子正则表达式,并将拆分得到的每个子正则表达式依次与待匹配文本进行匹配,直至其中一个拆分得到的子正则表达式与待匹配文本匹配成功为止,或直至拆分得到的每个子正则表达式均与待匹配文本匹配失败为止。由此可见,本申请提供的匹配方法为快速失败的匹配方法,在公有前缀和/或公有后缀匹配失败的情况下,就不必对待处理子正则表达式的剩余部分作匹配,如此可以加快匹配速度,提高匹配效率。在一个可能的设计中,使用所述待处理子正则表达式与待匹配的文本进行匹配,包括:在所述待处理子正则表达式不包含或元字符或组元字符时,使用所述待处理子正则表达式与待匹配文本进行匹配;若匹配不到,则确认所述待处理子正则表达式与待匹配文本匹配失败;若匹配到,则确认所述待处理子正则表达式与待匹配文本匹配成功。在一个可能的设计中,使用所述待处理子正则表达式与待匹配的文本进行匹配,包括:在所述待处理子正则表达式包含或元字符和/或组元字符、且不包含公有前缀和/或公有后缀时,将所述待处理子正则表达式拆分成至少一个子正则表达式;将拆分成的每个子正则表达式依次与待匹配文本进行匹配,直至其中一个拆分得到的子正则表达式与待匹配文本匹配成功为止,或直至拆分得到的每个子正则表达式均与待匹配文本匹配失败为止。本申请第二方面,提供了一种正则表达式的匹配装置,包括:分割单元,用于从用于文本匹配的正则表达式中分割出一个子正则表达式,作为待处理子正则表达式;处理单元,用于针对所述待处理子正则表达式执行如下处理:使用所述待处理子正则表达式与待匹配文本进行匹配;若匹配到,则获取匹配结果,匹配结束;若未匹配到,则通过所述分割单元继续从所述正则表达式中除去所述待处理子正则表达式后的剩余部分中分割出一个子正则表达式,作为新的待处理子正则表达式;针对新的待处理子正则表达式返回继续执行所述处理,直至所述分割单元从所述正则表达式中不能再分割出新的待处理子正则表达式为止,则匹配结束。在一个可能的设计中,所述分割单元在从用于文本匹配的正则表达式中分割出一个子正则表达式时,具体用于:从用于文本匹配的正则表达式的起始位置开始,从前往后查找第一个不被组元字符包含的或元字符的位置;若查找到,则将所述正则表达式的起始位置到所述第一个不被组元字符包含的或元字符的位置之间的部分作为一个子正则表达式;或,将所述正则表达式的第一个不被组元字符包含的或元字符的位置到所述正则表达式的结束位置之间的部分作为一个子正则表达式;若未查找到,则将所述正则表达式作为一个子正则表达式。在一个可能的设计中,所述处理单元在使用所述待处理子正则表达式与待匹配文本进行匹配时,具体用于:在所述待处理子正则表达式包含或元字符和/或组元字符、且包含公有前缀和/或公有后缀时,使用所述公有前缀和/或公有后缀与待匹配文本进行匹配;若匹配不到,则确认所述当前子正则表达式与待匹配文本匹配失败;若匹配到,则通过所述分割单元从所述待处理子正则表达式中除去所述公有前缀和公有后缀,得到剩余部分,将得到的剩余部分拆分成至少一个子正则表达式,并将拆分得到的每个子正则表达式依次与待匹配文本进行匹配,直至其中一个拆分得到的子正则表达式与待匹配文本匹配成功为止,或直至拆分得到的每个子正则表达式均与待匹配文本匹配失败为止。在一个可能的设计中,所述处理单元在使用所述待处理子正则表达式与待匹配的文本进行匹配时,具体用于:在所述待处理子正则表达式不包含或元字符或组元字符时,使用所述待处理子正则表达式与待匹配文本进行匹配;若匹配不到,则确认所述待处理子正则表达式与待匹配文本匹配失败;若匹配到,则确认所述待处理子正则表达式与待匹配文本匹配成功。在一个可能的设计中,所述处理单元在使用所述待处理子正则表达式与待匹配的文本进行匹配时,具体用于:在所述待处理子正则表达式包含或元字符和/或组元字符、且不包含公有前缀和/或公有后缀时,通过分割单元将所述待处理子正则表达式拆分成至少一个子正则表达式;将拆分成的每个子正则表达式依次与待匹配文本进行匹配,直至其中一个拆分得到的子正则表达式与待匹配文本匹配成功为止,或直至拆分得到的每个子正则表达式均与待匹配文本匹配失败为止。利用本申请提供的方案,本申请提供的正则表达式的匹配方法是一种以正则为导向的方法,故不同于以文本为导向的DFA,本方法不会产生中间状态导致状态爆炸,并且,本方法通过分割正则表达式,用相比于原正则表达式而言较简单的子正则表达式顺序去匹配文本,从而可以提高匹配速度。附图说明图1为本申请提供的一种正则表达式的匹配方法的流程图;图2为本申请提供的一种正则表达式的匹配装置的结构示意图。具体实施方式以下,对本申请中的部分用语进行解释说明。“正则表达式”,在很多文本编辑器或其他工具里,本文档来自技高网...
一种正则表达式的匹配方法和装置

【技术保护点】
一种正则表达式的匹配方法,其特征在于,包括:从用于文本匹配的正则表达式中分割出一个子正则表达式,作为待处理子正则表达式;针对所述待处理子正则表达式执行如下处理:使用所述待处理子正则表达式与待匹配文本进行匹配;若匹配到,则获取匹配结果,匹配结束;若未匹配到,则继续从所述正则表达式中除去所述待处理子正则表达式后的剩余部分中分割出一个子正则表达式,作为新的待处理子正则表达式,针对新的待处理子正则表达式返回继续执行所述处理,直至从所述正则表达式中不能再分割出新的待处理子正则表达式为止,则匹配结束。

【技术特征摘要】
1.一种正则表达式的匹配方法,其特征在于,包括:从用于文本匹配的正则表达式中分割出一个子正则表达式,作为待处理子正则表达式;针对所述待处理子正则表达式执行如下处理:使用所述待处理子正则表达式与待匹配文本进行匹配;若匹配到,则获取匹配结果,匹配结束;若未匹配到,则继续从所述正则表达式中除去所述待处理子正则表达式后的剩余部分中分割出一个子正则表达式,作为新的待处理子正则表达式,针对新的待处理子正则表达式返回继续执行所述处理,直至从所述正则表达式中不能再分割出新的待处理子正则表达式为止,则匹配结束。2.如权利要求1所述的方法,其特征在于,从用于文本匹配的正则表达式中分割出一个子正则表达式,包括:从用于文本匹配的正则表达式的起始位置开始,从前往后查找第一个不被组元字符包含的或元字符的位置;若查找到,则将所述正则表达式的起始位置到所述第一个不被组元字符包含的或元字符的位置之间的部分作为一个子正则表达式;或,将所述正则表达式的第一个不被组元字符包含的或元字符的位置到所述正则表达式的结束位置之间的部分作为一个子正则表达式;若未查找到,则将所述正则表达式作为一个子正则表达式。3.如权利要求1所述的方法,其特征在于,使用所述待处理子正则表达式与待匹配文本进行匹配,包括:在所述待处理子正则表达式包含或元字符和/或组元字符、且包含公有前缀和/或公有后缀时,使用所述公有前缀和/或公有后缀与待匹配文本进行匹配;若匹配不到,则确认所述当前子正则表达式与待匹配文本匹配失败;若匹配到,则从所述待处理子正则表达式中除去所述公有前缀和公有后缀,得到剩余部分,将得到的剩余部分拆分成至少一个子正则表达式,并将拆分得到的每个子正则表达式依次与待匹配文本进行匹配,直至其中一个拆分得到的子正则表达式与待匹配文本匹配成功为止,或直至拆分得到的每个子正则表达式均与待匹配文本匹配失败为止。4.如权利要求1所述的方法,其特征在于,使用所述待处理子正则表达式与待匹配的文本进行匹配,包括:在所述待处理子正则表达式不包含或元字符或组元字符时,使用所述待处理子正则表达式与待匹配文本进行匹配;若匹配不到,则确认所述待处理子正则表达式与待匹配文本匹配失败;若匹配到,则确认所述待处理子正则表达式与待匹配文本匹配成功。5.如权利要求1所述的方法,其特征在于,使用所述待处理子正则表达式与待匹配的文本进行匹配,包括:在所述待处理子正则表达式包含或元字符和/或组元字符、且不包含公有前缀和/或公有后缀时,将所述待处理子正则表达式拆分成至少一个子正则表达式;将拆分成的每个子正则表达式依次与待匹配文本进行匹配,直至其中一个拆分得到的子正则表达式与待匹配文本匹配成功为止,或直至拆分得到的每个子正则表达式均与待匹配文本匹配失败为止。6.一种正则表达式的匹配装置,其特征在于,包括:分割单元,用于从用于文本匹配的正则...

【专利技术属性】
技术研发人员:赵也
申请(专利权)人:北京优朋普乐科技有限公司
类型:发明
国别省市:北京,11

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

1