基于正则表达式的匹配方法及装置.pdf

上传人:zhu****69 文档编号:9326571 上传时间:2021-05-13 格式:PDF 页数:20 大小:890.04KB
收藏 版权申诉 举报 下载
基于正则表达式的匹配方法及装置.pdf_第1页
第1页 / 共20页
基于正则表达式的匹配方法及装置.pdf_第2页
第2页 / 共20页
基于正则表达式的匹配方法及装置.pdf_第3页
第3页 / 共20页
文档描述:

《基于正则表达式的匹配方法及装置.pdf》由会员分享,可在线阅读,更多相关《基于正则表达式的匹配方法及装置.pdf(20页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010042993.4 (22)申请日 2020.01.15 (71)申请人 奇安信科技集团股份有限公司 地址 100088 北京市西城区新街口外大街 28号102号楼3层332号 申请人 网神信息技术 (北京) 股份有限公司 (72)发明人 王彬覃永靖程诗尧马江波 (74)专利代理机构 北京路浩知识产权代理有限 公司 11002 代理人 苗晓静 (51)Int.Cl. G06F 16/903(2019.01) G06F 9/448(2018.01) (54)发明名称 一种。

2、基于正则表达式的匹配方法及装置 (57)摘要 本发明实施例提供了一种基于正则表达式 的匹配方法及装置, 包括将每个预设正则表达式 转化为对应的非确定有穷自动机NFA状态, 基于 部分NFA状态生成目标确定有穷自动机DFA状态; 创建目标DFA状态对应的所有子DFA状态, 判断每 个子DFA状态是否对应有次级子DFA状态; 若是, 创建每个子DFA状态对应的所有次级子DFA状态, 并判断每个次级子DFA状态是否对应有下一层级 的次级子DFA状态; 若否, 基于目标DFA状态、 每个 子DFA状态、 每个次级子DFA状态, 及除部分NFA状 态之外的所有NFA状态, 生成目标混合有限自动 机, 以。

3、基于目标混合有限自动机执行匹配任务。 本发明可以提高正则表达式的匹配性能, 提高网 络安全性能。 权利要求书3页 说明书10页 附图6页 CN 111222022 A 2020.06.02 CN 111222022 A 1.一种基于正则表达式的匹配方法, 其特征在于, 包括: 将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态, 基于部分NFA状态生 成目标确定有穷自动机DFA状态; 当所述目标DFA状态对应有子DFA状态时, 创建所述目标DFA状态对应的所有子DFA状 态, 并判断每个子DFA状态是否对应有次级子DFA状态; 如果是, 则创建每个子DFA状态对应的所有次级子DFA状态。

4、, 并判断每个次级子DFA状态 是否对应有下一层级的次级子DFA状态; 如果否, 则基于所述目标DFA状态、 每个子DFA状态、 每个次级子DFA状态, 及除所述部分 NFA状态之外的所有NFA状态, 生成目标混合有限自动机, 以基于所述目标混合有限自动机 对待匹配数据进行匹配。 2.根据权利要求1所述的基于正则表达式的匹配方法, 其特征在于, 所述将每个预设正 则表达式转化为对应的非确定有穷自动机NFA状态, 包括: 对每个预设正则表达式进行格式转换, 得到对应的目标正则表达式, 其中每个目标正 则表达式均用计算性算子表示; 将所述每个目标正则表达式转化为抽象语法树, 并将每个抽象语法树转化。

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

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

7、A状态, 包括: 确定所述DFA状态是否匹配成功, 如果是, 则确定所述当前DFA状态是否为未完成DFA状 态, 否则, 停止匹配。 6.根据权利要求4所述的基于正则表达式的匹配方法, 其特征在于, 所述判断是否存在 与所述未完成的DFA状态对应的目标尾部NFA状态, 包括: 若是, 则获取所述目标尾部NFA状态, 并确定与所述目标尾部NFA状态对应的DFA状态, 权利要求书 1/3 页 2 CN 111222022 A 2 并由与所述目标尾部NFA状态对应的DFA状态执行匹配任务, 否则, 停止匹配。 7.根据权利要求6所述的基于正则表达式的匹配方法, 其特征在于, 所述确定与所述目 标尾部。

8、NFA状态对应的DFA状态, 包括: 判断是否存在与所述目标尾部NFA状态对应的DFA状态; 如果是, 则由与所述目标尾部NFA状态对应的DFA状态继续执行匹配任务, 否则, 由所述 目标尾部NFA状态执行匹配任务。 8.一种基于正则表达式的匹配装置, 其特征在于, 包括转化模块、 创建模块、 判断模块 及生成模块, 其中: 所述转化模块, 用于将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态, 基于部分NFA状态生成目标确定有穷自动机DFA状态; 所述创建模块, 用于当所述目标DFA状态对应有子DFA状态时, 创建所述目标DFA状态对 应的所有子DFA状态, 并判断每个子DFA状态。

9、是否对应有次级子DFA状态; 所述判断模块, 用于如果是, 则创建每个子DFA状态对应的所有次级子DFA状态, 并判断 每个次级子DFA状态是否对应有下一层级的次级子DFA状态; 所述生成模块, 用于如果否, 则基于所述目标DFA状态、 每个子DFA状态、 每个次级子DFA 状态, 及除所述部分NFA状态之外的所有NFA状态, 生成目标混合有限自动机, 以基于所述目 标混合有限自动机对待匹配数据进行匹配。 9.根据权利要求8所述的基于正则表达式的匹配装置, 其特征在于, 所述转化模块, 用 于: 对每个预设正则表达式进行格式转换, 得到对应的目标正则表达式, 其中每个目标正 则表达式均用计算性。

10、算子表示; 将所述每个目标正则表达式转化为抽象语法树, 并将每个抽象语法树转化为对应的 NFA状态。 10.根据权利要求8所述的基于正则表达式的匹配装置, 其特征在于, 所述生成模块, 用 于: 将所述目标DFA状态、 每个子DFA状态、 每个次级子DFA状态中的最后一级DFA状态标记 为未完成DFA状态, 将除所述未完成DFA状态之外的每级所有DFA状态标记为已完成DFA状 态; 按照每个DFA状态对应的层级顺序, 基于所述未完成DFA状态及所有已完成DFA状态, 构 建头部半成品DFA; 将除所述部分NFA状态之外的每个NFA状态标记为尾部NFA, 并基于所述头部半成品DFA 及所有尾部N。

11、FA状态, 生成目标混合有限自动机。 11.根据权利要求8所述的基于正则表达式的匹配装置, 其特征在于, 所述基于正则表 达式的匹配装置, 还包括匹配模块, 用于: 通过所述目标混合有限自动机的当前DFA状态执行匹配任务, 并确定当前DFA状态是否 为未完成DFA状态; 如果是, 则判断是否存在与所述未完成的DFA状态对应的目标尾部NFA状态; 否则, 继续 由下一级DFA状态执行匹配任务, 并确定所述下一级DFA状态是否为未完成DFA状态。 12.根据权利要求11所述的基于正则表达式的匹配装置, 其特征在于, 所述匹配模块, 权利要求书 2/3 页 3 CN 111222022 A 3 用于。

12、: 确定所述DFA状态是否匹配成功, 如果是, 则确定所述当前DFA状态是否为未完成DFA状 态, 否则, 停止匹配。 13.根据权利要求11所述的基于正则表达式的匹配装置, 其特征在于, 所述匹配模块, 用于: 若是, 则获取所述目标尾部NFA状态, 并确定与所述目标尾部NFA状态对应的DFA状态, 并由与所述目标尾部NFA状态对应的DFA状态执行匹配任务, 否则, 停止匹配。 14.根据权利要求13所述的基于正则表达式的匹配装置, 其特征在于, 所述匹配模块, 用于: 判断是否存在与所述目标尾部NFA状态对应的DFA状态; 如果是, 则由与所述目标尾部NFA状态对应的DFA状态继续执行匹配。

13、任务, 否则, 由所述 目标尾部NFA状态执行匹配任务。 15.一种电子设备, 包括存储器、 处理器及存储在存储器上并可在处理器上运行的计算 机程序, 其特征在于, 所述处理器执行所述程序时实现如权利要求1至7任一项所述的基于 正则表达式的匹配方法的步骤。 16.一种非暂态计算机可读存储介质, 其上存储有计算机程序, 其特征在于, 该计算机 程序被处理器执行时实现如权利要求1至7任一项所述的基于正则表达式的匹配方法的步 骤。 权利要求书 3/3 页 4 CN 111222022 A 4 一种基于正则表达式的匹配方法及装置 技术领域 0001 本发明涉及计算机技术领域, 尤其涉及一种基于正则表达。

14、式的匹配方法及装置。 背景技术 0002 随着计算机技术的不断发展, 为防止出现网络安全事件, 进行网络安全检测也显 得尤为重要。 正则表达式作为一种匹配算法, 由于其较强的灵活性、 逻辑性和功能性, 已逐 渐成为网络安全检测中的关键技术。 0003 目前, 正则表示式通常编译为有限自动机来执行匹配任务, 有限自动机分为确定 有穷自动机(Deterministic finite automaton, DFA)和非确定有穷自动机(Non- deterministic finite automaton, NFA)。 由于DFA的匹配性能更好。 所以, 目前正则表达式 匹配引擎通常会将NFA转换为D。

15、FA, 由DFA对网络数据包(即待匹配数据)进行匹配, 以实现网 络安全检测。 0004 NFA转换为DFA的过程会占用较多的内存空间及CPU资源, 从而会影响到正则表达 式的匹配性能, 导致对待匹配数据的匹配结果的准确性较低, 进而会使得网络安全检测结 果的准确性较低, 网络安全性能较差。 故而, 目前亟需一种高匹配性能的基于正则表达式的 匹配方法。 发明内容 0005 由于现有方法存在上述问题, 本发明实施例提出一种基于正则表达式的匹配方法 及装置。 0006 第一方面, 本发明实施例提供了一种基于正则表达式的匹配方法, 包括: 0007 将每个预设正则表达式转化为对应的非确定有穷自动机N。

16、FA状态, 基于部分NFA状 态生成目标确定有穷自动机DFA状态; 0008 当所述目标DFA状态对应有子DFA状态时, 创建所述目标DFA状态对应的所有子DFA 状态, 并判断每个子DFA状态是否对应有次级子DFA状态; 0009 如果是, 则创建每个子DFA状态对应的所有次级子DFA状态, 并判断每个次级子DFA 状态是否对应有下一层级的次级子DFA状态; 0010 如果否, 则基于所述目标DFA状态、 每个子DFA状态、 每个次级子DFA状态, 及除所述 部分NFA状态之外的所有NFA状态, 生成目标混合有限自动机, 以基于所述目标混合有限自 动机对待匹配数据进行匹配。 0011 第二方。

17、面, 本发明实施例提供了一种正则表达式的匹配装置, 包括转化模块、 创建 模块、 判断模块及生成模块, 其中: 0012 所述转化模块, 用于将每个预设正则表达式转化为对应的非确定有穷自动机NFA 状态, 基于部分NFA状态生成目标确定有穷自动机DFA状态; 0013 所述创建模块, 用于当所述目标DFA状态对应有子DFA状态时, 创建所述目标DFA状 态对应的所有子DFA状态, 并判断每个子DFA状态是否对应有次级子DFA状态; 说明书 1/10 页 5 CN 111222022 A 5 0014 所述判断模块, 用于如果是, 则创建每个子DFA状态对应的所有次级子DFA状态, 并 判断每个。

18、次级子DFA状态是否对应有下一层级的次级子DFA状态; 0015 所述生成模块, 用于如果否, 则基于所述目标DFA状态、 每个子DFA状态、 每个次级 子DFA状态, 及除所述部分NFA状态之外的所有NFA状态, 生成目标混合有限自动机, 以基于 所述目标混合有限自动机对待匹配数据进行匹配。 0016 第三方面, 本发明实施例还提出一种电子设备, 包括存储器、 处理器及存储在存储 器上并可在处理器上运行的计算机程序, 所述处理器执行所述程序时实现如第一方面所述 的基于正则表达式的匹配方法的步骤。 0017 第四方面, 本发明实施例还提出一种非暂态计算机可读存储介质, 所述非暂态计 算机可读存。

19、储介质存储计算机程序, 所述计算机程序使所述计算机执行如第一方面所述的 基于正则表达式的匹配方法。 0018 由上述技术方案可知, 本发明实施例提供的基于正则表达式的匹配方法, 通过将 每个正则表达式转换为对应的NFA状态, 基于前述部分NFA状态生成目标DFA状态, 并基于目 标DFA状态、 目标DFA状态的每个子DFA状态、 各层级的次级子DFA状态及除前述部分NFA状态 之外的所有NFA状态, 构建目标混合有限自动机。 该目标混合有限自动机的构建, 不需要构 建完整的DFA, 降低了DFA状态的数量, 从而节省了内存空间及CPU资源, 进而可以有效提高 正则表达式的匹配性能。 同时, 该。

20、目标混合有限自动机具有多层DFA状态及至少一个NFA状 态, 具有良好的过滤性能, 从而可以进一步地提高正则表达式的匹配性能。 附图说明 0019 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下面描述中的附图是本发 明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根 据这些附图获得其他的附图。 0020 图1为本发明实施例提供的一种基于正则表达式的匹配方法的流程示意图; 0021 图2为本发明实施例提供的一种头部半成品DFA的结构示意图; 0022 图3为本发明实施例提。

21、供的一种目标混合有限自动机的结构示意图; 0023 图4为本发明实施例提供的一种基于正则表达式的匹配方法的流程示意图; 0024 图5为本发明实施例提供的一种基于目标混合有限自动机执行匹配任务的流程示 意图; 0025 图6为本发明实施例提供的一种基于正则表达式的匹配装置的结构示意图; 0026 图7为本发明实施例提供的一种基于正则表达式的匹配装置的结构示意图; 0027 图8为本发明实施例提供的一种电子设备的逻辑框图。 具体实施方式 0028 为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发明实施例 中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所。

22、描述的实施例是 本发明一部分实施例, 而不是全部的实施例。 基于本发明中的实施例, 本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。 说明书 2/10 页 6 CN 111222022 A 6 0029 图1示出了本实施例提供的一种基于正则表达式的匹配方法的流程示意图, 包括: 0030 S101, 将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态, 基于部分 NFA状态生成目标确定有穷自动机DFA状态。 0031 其中, 预设正则表达式指预先设定好的正则表达式。 0032 所述NFA状态指每个正则表达式对应的NFA状态。 0033 所。

23、述目标DFA状态指由前述所有NFA状态中的部分NFA状态生成的DFA状态。 0034 在实施中, 可以将每个正则表达式转化为一个NFA状态, 基于这些NFA状态中的部 分NFA状态生成目标DFA状态, 并基于该目标DFA状态、 每个DFA状态的子DFA状态、 每个子DFA 状态的次级子状态及前述NFA状态中除前述部分NFA状态之外的所有NFA状态, 构建目标混 合有限自动机, 以基于该目标混合有限自动机执行匹配任务。 具体的, 由于每个正则表达式 通常都存在一个对应的有限自动机, 该有限自动机表达的语义与该正则表达式表达的语义 完全相同, 可以将每个预先设定好的正则表达式编译为一个对应的NFA。

24、状态。 然后, 可以再 通过子集构造法基于前述NFA状态构造对应的目标DFA状态, 由于通过子集构造法构造目标 DFA状态, 可能并不是基于所有的NFA状态, 故而, 上述基于前述NFA状态构造对应的目标DFA 状态。 实际上可能是基于前述NFA状态中的部分DFA状态构造的。 0035 S102, 当目标DFA状态对应有子DFA状态时, 创建目标DFA状态对应的所有子DFA状 态, 并判断每个子DFA状态是否对应有次级子DFA状态。 0036 其中, 所述子DFA状态指目标DFA状态对应的下一级DFA状态。 0037 所述次级子DFA状态指每个子DFA状态对应的下一层级的子DFA状态。 003。

25、8 在实施中, 当目标DFA状态对应有子DFA状态时, 可以创建目标DFA状态对应的所有 子DFA状态。 然后, 可以再判断前述每个子DFA状态是否还对应有次级子DFA状态, 以确定是 否需要继续创建下一层级的子DFA状态。 以目标DFA状态为0为例, 假设目标DFA对应有子DFA 状态1和2, 则可以为目标DFA创建两个子DFA状态1和2, 然后, 再先后分别判断子DFA状态1和 2是否对应有次级子DFA状态。 可以理解, 在判断是否需要创建目标DFA状态对应的子DFA状 态时, 可以通过判断目标DFA状态是否存在到其他DFA状态的有效跳转来判断目标DFA状态 是否有子DFA状态, 如假设目。

26、标DFA状态不存在到其他DFA状态的有效跳转, 则表示该目标 DFA状态没有对应的子DFA状态。 0039 需要说明的是, 当不存在目标DFA状态对应的子DFA状态时, 则可以执行步骤S104, 即可以基于该目标DFA状态及前述NFA状态中的除用于构造目标DFA状态的部分NFA状态之 外的所有NFA状态, 生成目标混合有限自动机, 以基于该目标混合有限自动机执行匹配任 务。 0040 S103, 如果是, 则创建每个子DFA状态对应的所有次级子DFA状态, 并判断每个次级 子DFA状态是否对应有下一层级的次级子DFA状态。 0041 其中, 下一层级的次级子DFA状态指次级子DFA状态对应的下。

27、一层级的子DFA状态。 0042 在实施中, 如果存在与上述每个子DFA状态对应的次级子DFA状态, 则可以创建每 个子DFA状态对应的所有次级子DFA状态。 然后, 可以再判断是否存在前述每个次级子DFA状 态对应的下一层级的次级子DFA状态, 以确定是否需要继续创建下一层级的子DFA状态。 仍 以目标DFA创建两个子DFA状态分别为1和2为例, 假设子DFA状态1对应的次级子DFA状态为 3、 4、 5, 子DFA状态2对应的次级子DFA状态为6、 7。 则可以先创建子DFA状态1对应的次级子 说明书 3/10 页 7 CN 111222022 A 7 DFA状态为3、 4、 5, 然后,。

28、 再创建子DFA状态2对应的次级子DFA状态为6、 7。 之后, 再按照顺序 分别判断前述次级子DFA状态3、 4、 5及次级子DFA状态6、 7是否对应有下一层级的次级子DFA 状态。 如果是, 则参照前述过程继续创建, 否则, 则执行步骤S104。 可以理解, 判断是否需要 创建每个子DFA状态对应的次级子DFA状态的方法, 与判断是否需要创建目标DFA状态对应 的子DFA状态的方法类似, 在此不再赘述。 同时, 构建目标混合有限自动机时采用了分层模 式, 也就是说, 当出现某个子DFA状态不存在 “次级子DFA状态” 时, 则该子DFA状态后续的次 级子DFA状态均不存在, 即当判断某个。

29、子DFA状态/次级子DFA状态不存在下一层级的子DFA 状态时, 该子DFA状态/次级子DFA状态后续的下一层级的子DFA状态均不存在。 0043 需要说明的是, 为防止在构建目标混合有限自动机时, 占用过多的内存空间和CPU 资源, 可以对允许占用内存空间和CPU资源占用率设置上限, 作为预设限制条件。 故而, 在每 次创建DFA状态对应的子DFA状态之前, 都可以先判断当前的内存空间和CPU占用率是否满 足预设限制条件。 若满足, 则继续创建子DFA状态, 若不满足, 则停止创建。 0044 S104, 如果否, 则基于目标DFA状态、 每个子DFA状态、 每个次级子DFA状态, 及除部 。

30、分NFA状态之外的所有NFA状态, 生成目标混合有限自动机, 以基于目标混合有限自动机对 待匹配数据进行匹配。 0045 其中, 所述目标混合有限自动机指基于目标DFA状态、 每个子DFA状态、 每个次级子 DFA状态, 及除部分NFA状态之外的所有NFA状态, 生成的新的混合自动机。 0046 在实施中, 如果上述每个子DFA状态均不存在对应的次级子DFA状态, 则可以基于 已经生成的目标DFA状态、 已经创建的每个子DFA状态、 已经创建的每个层级的次级子DFA状 态, 按照分层模式, 按照层次从低到高的顺序构造, 生成目标混合有限自动机, 以基于目标 混合有限自动机对待匹配数据进行匹配。。

31、 0047 需要说明的是, 前述子DFA状态可以是指的任一层级的子DFA状态。 同时, 如步骤 S102中所述, 若目标DFA状态就不存在子DFA状态, 也可以直接执行本步骤, 可以理解, 每个 子DFA状态、 任一层级的DFA状态实际上都是一个DFA状态, 故而, 本步骤中所述的每个子DFA 状态均不存在对应的次级子DFA状态, 也包含前述目标DFA状态不存在对应的子DFA状态的 情况。 0048 由上述技术方案可知, 本发明实施例提供的基于正则表达式的匹配方法, 通过将 每个正则表达式转换为对应的NFA状态, 基于前述部分NFA状态生成目标DFA状态, 并基于目 标DFA状态、 目标DFA。

32、状态的每个子DFA状态、 各层级的次级子DFA状态及除前述部分NFA状态 之外的所有NFA状态, 构建目标混合有限自动机。 该目标混合有限自动机的构建, 不需要构 建完整的DFA, 降低了DFA状态的数量, 从而节省了内存空间及CPU资源, 进而可以有效提高 正则表达式的匹配性能。 同时, 该目标混合有限自动机具有多层DFA状态及至少一个NFA状 态, 具有良好的过滤性能, 从而可以进一步地提高正则表达式的匹配性能。 0049 进一步地, 在上述方法实施例的基础上, 可以通过将正则表达式转化成抽象语法 树的方式转化为NFA状态, 相应的, 上述步骤S101的部分处理可以如下: 对每个预设正则表。

33、 达式进行格式转换, 得到对应的目标正则表达式, 其中每个目标正则表达式均用计算性算 子表示; 将每个目标正则表达式转化为抽象语法树, 并将每个抽象语法树转化为对应的NFA 状态。 0050 其中, 目标正则表达式指格式化后用计算性算子表示的正则表达式。 说明书 4/10 页 8 CN 111222022 A 8 0051 在实施中, 可以先将每个预设正则表达式进行格式化(如补充、 转义等), 以通过计 算性算子(如连接、 并、 闭包三大计算性算子)表示每个预设正则表达式, 即目标正则表达 式。 然后, 可以对每个前述目标正则表达式, 进行转化, 得到对应的抽象语法树。 在得到每个 目标正则表。

34、达式对应的抽象语法树之后, 可以将每个抽象语法树转化为对应的NFA状态, 如 可以通过Thompson构造法进行抽象语法树到NFA状态的转化。 这样, 对预设正则表达式进行 格式化并通过抽象语法树的方式将正则表达式转化为NFA状态, 可以进一步提高正则表达 式到NFA状态的转化速率, 从而进一步地提高匹配性能。 0052 进一步地, 在上述方法实施例的基础上, 可以通过分层模式, 即按照DFA状态的层 次由低到高的顺序, 构造目标混合有限自动机, 相应的, 上述步骤S104的部分处理可以如 下: 将目标DFA状态、 每个子DFA状态、 每个次级子DFA状态中的最后一级DFA状态标记为未完 成D。

35、FA状态, 将除未完成DFA状态之外的每级所有DFA状态标记为已完成DFA状态; 按照每个 DFA状态对应的层级顺序, 基于未完成DFA状态及所有已完成DFA状态, 构建头部半成品DFA; 将除部分NFA状态之外的每个NFA状态标记为尾部NFA, 并基于头部半成品DFA及所有尾部 NFA状态, 生成目标混合有限自动机。 0053 其中, 所述未完成DFA状态指最后一个层级的DFA状态。 0054 所述已完成的DFA状态指除前述未完成DFA状态之外的DFA状态。 0055 所述头部半成品DFA指由前述未完成DFA状态及所有已完成DFA状态构建的DFA。 0056 所述尾部NFA指所有预设正则表达。

36、式对应的NFA状态中, 除前述用于构建目标DFA 状态之外的所有NFA状态。 0057 在实施中, 可以通过分层模式, 即基于前述目标DFA状态、 每个子DFA状态、 每个次 级DFA状态及各DFA状态对应的层级, 按照各层级由低到高的顺序, 构造目标混合有限自动 机。 具体的, 可以将目标DFA状态的层级默认为第一层, 目标DFA状态的各个子DFA状态的层 级设置为第二层, 目标DFA状态的第一个子DFA状态的次级子DFA状态的层级设置为第三层, 目标DFA状态的第二个子DFA状态的次级子DFA状态的层级设置为第四层, 以此类推, 可以得 到每个DFA状态对应的层级。 然后, 可以将最后一个。

37、层级的DFA状态标记为未完成DFA状态, 其他层级的DFA状态均标记为已完成DFA状态。 之后, 可以按照前述各个DFA状态对应的层 级, 按照层级从低到高的顺序构建头部半成品DFA。 然后, 可以确定除前述用于生成目标DFA 状态的部分NFA状态之外的所有NFA状态, 并将每一个除前述用于生成目标DFA状态的部分 NFA状态之外的NFA状态标记为尾部NFA。 之后, 可以基于前述头部DFA及尾部NFA生成半成品 DFA自动机, 即目标混合有限自动机。 这样, 基于头部半成品DFA和所有尾部NFA状态构建目 标混合有限自动机, 在通过该目标混合有限自动机对待匹配数据进行匹配时, 可以更多的 通。

38、过头部半成品DFA进行匹配, 从而可以进一步提高匹配性能, 0058 以目标DFA状态为A, 目标DFA状态A对应的子DFA状态为B, 该子DFA状态B对应的次 级子DFA状态为C1和C2, 次级子DFA状态C1对应的下一层级的次级子DFA状态为D1和D2, 次级子 DFA状态C2对应的下一层级的次级子DFA状态为D3为例, 首先, 可以将目标DFA状态A标记为第 一层级, 将子DFA状态B标记为第二层级, 将次级子DFA状态C1和C2标记为第三层级, 将下一层 级的次级子DFA状态D1和D2均标记为第四层级, 将下一层级的次级子DFA状态D3均标记为第 五层级。 然后, 可以将第五层级, 即。

39、DFA状态D3, 标记为未完成DFA状态, 并将其他层级, 即第 一到第四层级的DFA状态, 均标记为已完成DFA状态, 并按照层级由低到高的顺序基于前述 说明书 5/10 页 9 CN 111222022 A 9 所有已完成DFA状态及未完成DFA状态构建头部半成品DFA, 如图2所示。 之后, 假设有10个预 设正则表达式, 则对应有10个NFA状态, 若构建目标DFA状态时是基于其中7个构建的, 则可 以确定除10个NFA状态中除前述7个之外的3个NFA状态, 并将这3个NFA状态标记为尾部NFA。 然后, 可以基于前述头部半成品DFA及前述3个尾部NFA, 构建目标混合有限自动机, 如。

40、图3所 示。 需要说明的是, 由于3个尾部NFA未能参与目标DFA的构建, 故而, 尾部NFA在头部半成品 DFA中可能对应有DFA状态, 所以, 图3中尾部NFA与头部半成品DFA采用虚线连接, 以表示尾 部NFA与头部半成品DFA中的DFA状态可能存在的转化关系。 0059 如图4所示, 为本发明实施例提供的一个优选实施例的流程图。 首先, 可以将每个 预设正则表达式转换为用计算性算子表示目标正则表达式, 再将每个目标正则表达式转化 为抽象语法树。 然后, 用Thompson算法将每个抽象语法树转化为NFA状态, 再基于部分NFA状 态通过子集构造法生成目标DFA状态。 之后, 将该目标D。

41、FA状态加入队列, 并判断当前是否满 足预设限制条件, 如果不满足, 则基于目标DFA状态及未用到的NFA状态创建目标混合有限 自动机, 如果满足, 则判断队列中是否存在DFA状态, 此时队列中有目标DFA状态, 故而, 可以 创建该目标DFA状态对应的子DFA状态, 将子DFA状态加入临时队列, 并将目标DFA状态从队 列中删除。 之后, 再判断当前是否满足预设限制条件, 同样的, 如果不满足, 则基于以创建的 每个DFA状态及未用到的NFA状态创建目标混合有限自动机。 如果满足, 则判断队列中是否 存在DFA状态, 此时目标DFA状态已从队列删除, 队列为空。 然后, 可以判断临时队列是否。

42、有 DFA状态, 由于前边已将子DFA状态加入临时队列, 所以此时临时队列有DFA状态。 之后, 可以 将临时队列的DFA状态移入队列中, 再判断当前是否满足预设限制条件, 以此类推。 直至不 满足预设限制条件或者队列和临时队列均无DFA状态, 则于目标DFA状态、 前述创建的各个 子DFA状态及未用到的NFA状态创建目标混合有限自动机。 0060 进一步地, 在上述方法实施例的基础上, 可以基于前述目标混合有限自动机逐层 执行匹配任务, 相应的, 上述步骤S104的部分处理可以如下: 通过目标混合有限自动机的当 前DFA状态执行匹配任务, 并确定当前DFA状态是否为未完成DFA状态; 如果是。

43、, 则判断是否 存在与未完成的DFA状态对应的目标尾部NFA状态; 否则, 继续由下一级DFA状态执行匹配任 务, 并确定下一级DFA状态是否为未完成DFA状态。 0061 其中, 目标尾部NFA状态指: 与目标混合有限自动机中被标记为未完成DFA状态的 层级中的DFA状态, 对应的尾部NFA状态。 0062 在实施中, 可以基于上述生成的目标混合有限自动机中的各层DFA状态及尾部NFA 状态逐层执行匹配任务。 具体的, 首先, 可以由上述目标混合有限自动机的头部半成品DFA 中的第一层DFA状态执行匹配任务。 然后再判断前述第一层DFA状态是否被标记为未完成 DFA状态。 如果第一层DFA状。

44、态已经被标记为未完成DFA状态, 则可以认为该层DFA状态也是 头部半成品DFA中的最后一层。 然后, 可以判断目标混合有限自动机的尾部NFA中是否存在 与前述最后一层DFA状态对应的目标NFA状态, 以确定是否由尾部NFA继续执行匹配任务。 如 果第一层DFA状态被标记为已完成DFA状态, 而不是未完成状态, 则可以继续由第二层级的 DFA状态执行匹配任务, 再确定第二层级的DFA状态是否被标记为未完成状态, 以此类推, 直 至判断到某一层级的DFA状态是未完成状态, 再判断目标混合有限自动机的尾部NFA中是否 存在, 以确定是否由尾部NFA继续执行匹配任务。 这样, 通过目标混合有限自动机。

45、的头部半 成品DFA中的多层DFA状态对网络数据包进行多次匹配, 可以有效过滤掉待匹配数据中的大 说明书 6/10 页 10 CN 111222022 A 10 量字符串, 从而可以进一步提高对待匹配数据进行匹配的匹配结果的准确性。 0063 进一步地, 在上述方法实施例的基础上, 在基于目标混合有限自动机执行匹配任 务时, 每一层级的DFA状态执行匹配之后, 都需要先判断是否匹配成功, 相应的处理可以如 下: 确定DFA状态是否匹配成功, 如果是, 则确定当前DFA状态是否为未完成DFA状态, 否则, 停止匹配。 0064 在实施中, 在基于目标混合有限自动机执行匹配任务时, 是按照各个DF。

46、A状态的层 级顺序依次执行匹配任务的。 且每次DFA状态进行匹配时, 都会出现匹配成功和匹配失败的 状态, 故而, 在每一层DFA状态进行匹配之后, 可以判断当前DFA状态的匹配任务是否成功匹 配, 如果成功匹配, 则可以确定该DFA状态的层级是否被标记为未完成DFA状态。 如果匹配失 败, 则返回结果false, 并停止匹配, 本次匹配任务结束。 这样, 仅在DFA状态匹配成功时, 确 定当前DFA状态是否是未完成DFA状态, 可以在一定程度上减少确定当前DFA状态是否是未 完成DFA状态的处理次数, 从而可以进一步的提高匹配速率。 0065 进一步地, 在上述实施例的基础上, 在当前DFA。

47、状态的层级被标记为未完成DFA状 态时, 则需要判断是否存在与该DFA状态对应的尾部NFA状态。 相应的处理可以如下: 若是, 则获取目标尾部NFA状态, 并确定与目标尾部NFA状态对应的DFA状态, 并由与目标尾部NFA 状态对应的DFA状态执行匹配任务。 否则, 停止匹配。 0066 在实施中, 在基于目标混合有限自动机执行匹配任务时, 若当前DFA状态的层级被 标记为未完成DFA状态时, 则需要判断该目标混合有限自动机的尾部NFA中, 是否存在与该 DFA状态对应的目标尾部NFA状态。 具体的, 如果目标混合有限自动机的尾部NFA中存在与该 DFA状态对应的目标尾部NFA状态, 则可以继。

48、续确定前述头部DFA中与该目标尾部NFA状态对 应的DFA状态, 由该DFA状态继续执行匹配任务。 如果目标混合有限自动机的尾部NFA中不存 在与该DFA状态对应的目标尾部NFA状态, 则返回结果false, 并停止匹配, 匹配任务结束。 这 样, 在目标尾部NFA状态对应有DFA状态, 由该DFA状态执行匹配, 可以进一步提高匹配结果 的准确性和匹配效率。 0067 进一步地, 在上述实施例的基础上, 当存在目标尾部NFA状态时, 还需要判断是否 存在与该目标尾部NFA状态对应的NFA状态, 相应的处理可以如下: 判断是否存在与目标尾 部NFA状态对应的DFA状态; 如果是, 则由与目标尾部。

49、NFA状态对应的DFA状态继续执行匹配 任务, 否则, 由目标尾部NFA状态执行匹配任务。 0068 在实施中, 在基于上述目标混合有限自动机执行匹配任务, 且已跳转至与目标混 合有限自动机的尾部NFA中, 与目标混合有限自动机的头部半成品DFA的最后一层级的DFA 状态对应的目标尾部NFA状态时, 在通过该目标尾部NFA状态执行匹配任务之前, 还可以先 判断目标混合有限自动机的头部半成品DFA中是否存在与该目标尾部NFA状态对应的DFA状 态。 如果有, 则可以跳转至该与目标尾部NFA状态对应的DFA状态执行匹配任务。 否则, 则由 该目标尾部NFA状态执行匹配任务。 这样, 可以尽可能的使。

50、用DFA状态执行匹配任务, 从而可 以进一步的提高正则表达式的匹配性能。 0069 如图5所示, 为本发明实施例提供的一种优选实施例的流程图, 采用目标混合有限 自动机的头部半成品DFA的当前DFA状态执行匹配任务。 如果匹配失败, 则匹配结束, 返回结 果false。 如果匹配成功, 则判断该DFA状态是否处于未完成DFA状态, 如果不是, 则转由下一 层DFA状态继续执行匹配任务, 如果是, 则判断是否有该DFA状态对应的目标尾部NFA状态。 说明书 7/10 页 11 CN 111222022 A 11 如果没有该DFA状态对应的目标尾部NFA状态, 则匹配结束, 如果有该DFA状态对应。

展开阅读全文
内容关键字: 基于 正则 表达式 匹配 方法 装置
关于本文
本文标题:基于正则表达式的匹配方法及装置.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/9326571.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1