【技术实现步骤摘要】
一种基于正则表达式的匹配方法及装置
本专利技术涉及计算机
,尤其涉及一种基于正则表达式的匹配方法及装置。
技术介绍
随着计算机技术的不断发展,为防止出现网络安全事件,进行网络安全检测也显得尤为重要。正则表达式作为一种匹配算法,由于其较强的灵活性、逻辑性和功能性,已逐渐成为网络安全检测中的关键技术。目前,正则表示式通常编译为有限自动机来执行匹配任务,有限自动机分为确定有穷自动机(Deterministicfiniteautomaton,DFA)和非确定有穷自动机(Non-deterministicfiniteautomaton,NFA)。由于DFA的匹配性能更好。所以,目前正则表达式匹配引擎通常会将NFA转换为DFA,由DFA对网络数据包(即待匹配数据)进行匹配,以实现网络安全检测。NFA转换为DFA的过程会占用较多的内存空间及CPU资源,从而会影响到正则表达式的匹配性能,导致对待匹配数据的匹配结果的准确性较低,进而会使得网络安全检测结果的准确性较低,网络安全性能较差。故而,目前亟需一种高匹配性能的基于正则表达式的匹配方法。
技术实现思路
由于现有方法存在上述问题,本专利技术实施例提出一种基于正则表达式的匹配方法及装置。第一方面,本专利技术实施例提供了一种基于正则表达式的匹配方法,包括:将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态;当所述目标DFA状态对应有子DFA状态时,创建所述目标DF ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。