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

技术编号:24353752 阅读:60 留言:0更新日期:2020-06-03 02:07
本发明专利技术实施例提供了一种基于正则表达式的匹配方法及装置,包括将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态;创建目标DFA状态对应的所有子DFA状态,判断每个子DFA状态是否对应有次级子DFA状态;若是,创建每个子DFA状态对应的所有次级子DFA状态,并判断每个次级子DFA状态是否对应有下一层级的次级子DFA状态;若否,基于目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于目标混合有限自动机执行匹配任务。本发明专利技术可以提高正则表达式的匹配性能,提高网络安全性能。

A matching method and device based on regular expression

【技术实现步骤摘要】
一种基于正则表达式的匹配方法及装置
本专利技术涉及计算机
,尤其涉及一种基于正则表达式的匹配方法及装置。
技术介绍
随着计算机技术的不断发展,为防止出现网络安全事件,进行网络安全检测也显得尤为重要。正则表达式作为一种匹配算法,由于其较强的灵活性、逻辑性和功能性,已逐渐成为网络安全检测中的关键技术。目前,正则表示式通常编译为有限自动机来执行匹配任务,有限自动机分为确定有穷自动机(Deterministicfiniteautomaton,DFA)和非确定有穷自动机(Non-deterministicfiniteautomaton,NFA)。由于DFA的匹配性能更好。所以,目前正则表达式匹配引擎通常会将NFA转换为DFA,由DFA对网络数据包(即待匹配数据)进行匹配,以实现网络安全检测。NFA转换为DFA的过程会占用较多的内存空间及CPU资源,从而会影响到正则表达式的匹配性能,导致对待匹配数据的匹配结果的准确性较低,进而会使得网络安全检测结果的准确性较低,网络安全性能较差。故而,目前亟需一种高匹配性能的基于正则表达式的匹配方法。
技术实现思路
由于现有方法存在上述问题,本专利技术实施例提出一种基于正则表达式的匹配方法及装置。第一方面,本专利技术实施例提供了一种基于正则表达式的匹配方法,包括:将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态;当所述目标DFA状态对应有子DFA状态时,创建所述目标DFA状态对应的所有子DFA状态,并判断每个子DFA状态是否对应有次级子DFA状态;如果是,则创建每个子DFA状态对应的所有次级子DFA状态,并判断每个次级子DFA状态是否对应有下一层级的次级子DFA状态;如果否,则基于所述目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除所述部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于所述目标混合有限自动机对待匹配数据进行匹配。第二方面,本专利技术实施例提供了一种正则表达式的匹配装置,包括转化模块、创建模块、判断模块及生成模块,其中:所述转化模块,用于将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态;所述创建模块,用于当所述目标DFA状态对应有子DFA状态时,创建所述目标DFA状态对应的所有子DFA状态,并判断每个子DFA状态是否对应有次级子DFA状态;所述判断模块,用于如果是,则创建每个子DFA状态对应的所有次级子DFA状态,并判断每个次级子DFA状态是否对应有下一层级的次级子DFA状态;所述生成模块,用于如果否,则基于所述目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除所述部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于所述目标混合有限自动机对待匹配数据进行匹配。第三方面,本专利技术实施例还提出一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的基于正则表达式的匹配方法的步骤。第四方面,本专利技术实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行如第一方面所述的基于正则表达式的匹配方法。由上述技术方案可知,本专利技术实施例提供的基于正则表达式的匹配方法,通过将每个正则表达式转换为对应的NFA状态,基于前述部分NFA状态生成目标DFA状态,并基于目标DFA状态、目标DFA状态的每个子DFA状态、各层级的次级子DFA状态及除前述部分NFA状态之外的所有NFA状态,构建目标混合有限自动机。该目标混合有限自动机的构建,不需要构建完整的DFA,降低了DFA状态的数量,从而节省了内存空间及CPU资源,进而可以有效提高正则表达式的匹配性能。同时,该目标混合有限自动机具有多层DFA状态及至少一个NFA状态,具有良好的过滤性能,从而可以进一步地提高正则表达式的匹配性能。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种基于正则表达式的匹配方法的流程示意图;图2为本专利技术实施例提供的一种头部半成品DFA的结构示意图;图3为本专利技术实施例提供的一种目标混合有限自动机的结构示意图;图4为本专利技术实施例提供的一种基于正则表达式的匹配方法的流程示意图;图5为本专利技术实施例提供的一种基于目标混合有限自动机执行匹配任务的流程示意图;图6为本专利技术实施例提供的一种基于正则表达式的匹配装置的结构示意图;图7为本专利技术实施例提供的一种基于正则表达式的匹配装置的结构示意图;图8为本专利技术实施例提供的一种电子设备的逻辑框图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图1示出了本实施例提供的一种基于正则表达式的匹配方法的流程示意图,包括:S101,将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态。其中,预设正则表达式指预先设定好的正则表达式。所述NFA状态指每个正则表达式对应的NFA状态。所述目标DFA状态指由前述所有NFA状态中的部分NFA状态生成的DFA状态。在实施中,可以将每个正则表达式转化为一个NFA状态,基于这些NFA状态中的部分NFA状态生成目标DFA状态,并基于该目标DFA状态、每个DFA状态的子DFA状态、每个子DFA状态的次级子状态及前述NFA状态中除前述部分NFA状态之外的所有NFA状态,构建目标混合有限自动机,以基于该目标混合有限自动机执行匹配任务。具体的,由于每个正则表达式通常都存在一个对应的有限自动机,该有限自动机表达的语义与该正则表达式表达的语义完全相同,可以将每个预先设定好的正则表达式编译为一个对应的NFA状态。然后,可以再通过子集构造法基于前述NFA状态构造对应的目标DFA状态,由于通过子集构造法构造目标DFA状态,可能并不是基于所有的NFA状态,故而,上述基于前述NFA状态构造对应的目标DFA状态。实际上可能是基于前述NFA状态中的部分DFA状态构造的。S102,当目标DFA状态对应有子DFA状态时,创建目标DFA状态对应的所有子DFA状态,并判断每个子DFA状态是否对应有次级子DFA状本文档来自技高网...

【技术保护点】
1.一种基于正则表达式的匹配方法,其特征在于,包括:/n将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态;/n当所述目标DFA状态对应有子DFA状态时,创建所述目标DFA状态对应的所有子DFA状态,并判断每个子DFA状态是否对应有次级子DFA状态;/n如果是,则创建每个子DFA状态对应的所有次级子DFA状态,并判断每个次级子DFA状态是否对应有下一层级的次级子DFA状态;/n如果否,则基于所述目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除所述部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于所述目标混合有限自动机对待匹配数据进行匹配。/n

【技术特征摘要】
1.一种基于正则表达式的匹配方法,其特征在于,包括:
将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态;
当所述目标DFA状态对应有子DFA状态时,创建所述目标DFA状态对应的所有子DFA状态,并判断每个子DFA状态是否对应有次级子DFA状态;
如果是,则创建每个子DFA状态对应的所有次级子DFA状态,并判断每个次级子DFA状态是否对应有下一层级的次级子DFA状态;
如果否,则基于所述目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除所述部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于所述目标混合有限自动机对待匹配数据进行匹配。


2.根据权利要求1所述的基于正则表达式的匹配方法,其特征在于,所述将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,包括:
对每个预设正则表达式进行格式转换,得到对应的目标正则表达式,其中每个目标正则表达式均用计算性算子表示;
将所述每个目标正则表达式转化为抽象语法树,并将每个抽象语法树转化为对应的NFA状态。


3.根据权利要求1所述的基于正则表达式的匹配方法,其特征在于,所述基于所述目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除所述部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,包括:
将所述目标DFA状态、每个子DFA状态、每个次级子DFA状态中的最后一级DFA状态标记为未完成DFA状态,将除所述未完成DFA状态之外的每级所有DFA状态标记为已完成DFA状态;
按照每个DFA状态对应的层级顺序,基于所述未完成DFA状态及所有已完成DFA状态,构建头部半成品DFA;
将除所述部分NFA状态之外的每个NFA状态标记为尾部NFA,并基于所述头部半成品DFA及所有尾部NFA状态,生成目标混合有限自动机。


4.根据权利要求1所述的基于正则表达式的匹配方法,其特征在于,所述基于所述目标混合有限自动机执行匹配任务,包括:
通过所述目标混合有限自动机的当前DFA状态执行匹配任务,并确定当前DFA状态是否为未完成DFA状态;
如果是,则判断是否存在与所述未完成的DFA状态对应的目标尾部NFA状态;否则,继续由下一级DFA状态执行匹配任务,并确定所述下一级DFA状态是否为未完成DFA状态。


5.根据权利要求4所述的基于正则表达式的匹配方法,其特征在于,所述确定当前DFA状态是否为未完成的DFA状态,包括:
确定所述DFA状态是否匹配成功,如果是,则确定所述当前DFA状态是否为未完成DFA状态,否则,停止匹配。


6.根据权利要求4所述的基于正则表达式的匹配方法,其特征在于,所述判断是否存在与所述未完成的DFA状态对应的目标尾部NFA状态,包括:
若是,则获取所述目标尾部NFA状态,并确定与所述目标尾部NFA状态对应的DFA状态,并由与所述目标尾部NFA状态对应的DFA状态执行匹配任务,否则,停止匹配。


7.根据权利要求6所述的基于正则表达式的匹配方法,其特征在于,所述确定与所述目标尾部NFA状态对应的DFA状态,包括:
判断是否存在与所述目标尾部NFA状态对应的DFA状态;
如果是,则由与所述目标尾部NFA状态对应的DFA状态继续执行匹配任务,否则,由所述目标尾部NFA状态执行匹配任务。


8.一种基于正则表达式的匹配装置,其特征在于,包括转化模块、创建模块、判断模块及生成模块,其中:
...

【专利技术属性】
技术研发人员:王彬覃永靖程诗尧马江波
申请(专利权)人:奇安信科技集团股份有限公司网神信息技术北京股份有限公司
类型:发明
国别省市:北京;11

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

1