CN111222022A - 一种基于正则表达式的匹配方法及装置 - Google Patents
一种基于正则表达式的匹配方法及装置 Download PDFInfo
- Publication number
- CN111222022A CN111222022A CN202010042993.4A CN202010042993A CN111222022A CN 111222022 A CN111222022 A CN 111222022A CN 202010042993 A CN202010042993 A CN 202010042993A CN 111222022 A CN111222022 A CN 111222022A
- Authority
- CN
- China
- Prior art keywords
- dfa
- state
- target
- nfa
- dfa state
- 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.)
- Granted
Links
- 230000014509 gene expression Effects 0.000 title claims abstract description 96
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 239000011265 semifinished product Substances 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010276 construction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种基于正则表达式的匹配方法及装置,包括将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态;创建目标DFA状态对应的所有子DFA状态,判断每个子DFA状态是否对应有次级子DFA状态;若是,创建每个子DFA状态对应的所有次级子DFA状态,并判断每个次级子DFA状态是否对应有下一层级的次级子DFA状态;若否,基于目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于目标混合有限自动机执行匹配任务。本发明可以提高正则表达式的匹配性能,提高网络安全性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于正则表达式的匹配方法及装置。
背景技术
随着计算机技术的不断发展,为防止出现网络安全事件,进行网络安全检测也显得尤为重要。正则表达式作为一种匹配算法,由于其较强的灵活性、逻辑性和功能性,已逐渐成为网络安全检测中的关键技术。
目前,正则表示式通常编译为有限自动机来执行匹配任务,有限自动机分为确定有穷自动机(Deterministic finite automaton,DFA)和非确定有穷自动机(Non-deterministic finite automaton,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状态。
其中,所述子DFA状态指目标DFA状态对应的下一级DFA状态。
所述次级子DFA状态指每个子DFA状态对应的下一层级的子DFA状态。
在实施中,当目标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状态,如假设目标DFA状态不存在到其他DFA状态的有效跳转,则表示该目标DFA状态没有对应的子DFA状态。
需要说明的是,当不存在目标DFA状态对应的子DFA状态时,则可以执行步骤S104,即可以基于该目标DFA状态及前述NFA状态中的除用于构造目标DFA状态的部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于该目标混合有限自动机执行匹配任务。
S103,如果是,则创建每个子DFA状态对应的所有次级子DFA状态,并判断每个次级子DFA状态是否对应有下一层级的次级子DFA状态。
其中,下一层级的次级子DFA状态指次级子DFA状态对应的下一层级的子DFA状态。
在实施中,如果存在与上述每个子DFA状态对应的次级子DFA状态,则可以创建每个子DFA状态对应的所有次级子DFA状态。然后,可以再判断是否存在前述每个次级子DFA状态对应的下一层级的次级子DFA状态,以确定是否需要继续创建下一层级的子DFA状态。仍以目标DFA创建两个子DFA状态分别为1和2为例,假设子DFA状态1对应的次级子DFA状态为3、4、5,子DFA状态2对应的次级子DFA状态为6、7。则可以先创建子DFA状态1对应的次级子DFA状态为3、4、5,然后,再创建子DFA状态2对应的次级子DFA状态为6、7。之后,再按照顺序分别判断前述次级子DFA状态3、4、5及次级子DFA状态6、7是否对应有下一层级的次级子DFA状态。如果是,则参照前述过程继续创建,否则,则执行步骤S104。可以理解,判断是否需要创建每个子DFA状态对应的次级子DFA状态的方法,与判断是否需要创建目标DFA状态对应的子DFA状态的方法类似,在此不再赘述。同时,构建目标混合有限自动机时采用了分层模式,也就是说,当出现某个子DFA状态不存在“次级子DFA状态”时,则该子DFA状态后续的次级子DFA状态均不存在,即当判断某个子DFA状态/次级子DFA状态不存在下一层级的子DFA状态时,该子DFA状态/次级子DFA状态后续的下一层级的子DFA状态均不存在。
需要说明的是,为防止在构建目标混合有限自动机时,占用过多的内存空间和CPU资源,可以对允许占用内存空间和CPU资源占用率设置上限,作为预设限制条件。故而,在每次创建DFA状态对应的子DFA状态之前,都可以先判断当前的内存空间和CPU占用率是否满足预设限制条件。若满足,则继续创建子DFA状态,若不满足,则停止创建。
S104,如果否,则基于目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于目标混合有限自动机对待匹配数据进行匹配。
其中,所述目标混合有限自动机指基于目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除部分NFA状态之外的所有NFA状态,生成的新的混合自动机。
在实施中,如果上述每个子DFA状态均不存在对应的次级子DFA状态,则可以基于已经生成的目标DFA状态、已经创建的每个子DFA状态、已经创建的每个层级的次级子DFA状态,按照分层模式,按照层次从低到高的顺序构造,生成目标混合有限自动机,以基于目标混合有限自动机对待匹配数据进行匹配。
需要说明的是,前述子DFA状态可以是指的任一层级的子DFA状态。同时,如步骤S102中所述,若目标DFA状态就不存在子DFA状态,也可以直接执行本步骤,可以理解,每个子DFA状态、任一层级的DFA状态实际上都是一个DFA状态,故而,本步骤中所述的每个子DFA状态均不存在对应的次级子DFA状态,也包含前述目标DFA状态不存在对应的子DFA状态的情况。
由上述技术方案可知,本发明实施例提供的基于正则表达式的匹配方法,通过将每个正则表达式转换为对应的NFA状态,基于前述部分NFA状态生成目标DFA状态,并基于目标DFA状态、目标DFA状态的每个子DFA状态、各层级的次级子DFA状态及除前述部分NFA状态之外的所有NFA状态,构建目标混合有限自动机。该目标混合有限自动机的构建,不需要构建完整的DFA,降低了DFA状态的数量,从而节省了内存空间及CPU资源,进而可以有效提高正则表达式的匹配性能。同时,该目标混合有限自动机具有多层DFA状态及至少一个NFA状态,具有良好的过滤性能,从而可以进一步地提高正则表达式的匹配性能。
进一步地,在上述方法实施例的基础上,可以通过将正则表达式转化成抽象语法树的方式转化为NFA状态,相应的,上述步骤S101的部分处理可以如下:对每个预设正则表达式进行格式转换,得到对应的目标正则表达式,其中每个目标正则表达式均用计算性算子表示;将每个目标正则表达式转化为抽象语法树,并将每个抽象语法树转化为对应的NFA状态。
其中,目标正则表达式指格式化后用计算性算子表示的正则表达式。
在实施中,可以先将每个预设正则表达式进行格式化(如补充、转义等),以通过计算性算子(如连接、并、闭包三大计算性算子)表示每个预设正则表达式,即目标正则表达式。然后,可以对每个前述目标正则表达式,进行转化,得到对应的抽象语法树。在得到每个目标正则表达式对应的抽象语法树之后,可以将每个抽象语法树转化为对应的NFA状态,如可以通过Thompson构造法进行抽象语法树到NFA状态的转化。这样,对预设正则表达式进行格式化并通过抽象语法树的方式将正则表达式转化为NFA状态,可以进一步提高正则表达式到NFA状态的转化速率,从而进一步地提高匹配性能。
进一步地,在上述方法实施例的基础上,可以通过分层模式,即按照DFA状态的层次由低到高的顺序,构造目标混合有限自动机,相应的,上述步骤S104的部分处理可以如下:将目标DFA状态、每个子DFA状态、每个次级子DFA状态中的最后一级DFA状态标记为未完成DFA状态,将除未完成DFA状态之外的每级所有DFA状态标记为已完成DFA状态;按照每个DFA状态对应的层级顺序,基于未完成DFA状态及所有已完成DFA状态,构建头部半成品DFA;将除部分NFA状态之外的每个NFA状态标记为尾部NFA,并基于头部半成品DFA及所有尾部NFA状态,生成目标混合有限自动机。
其中,所述未完成DFA状态指最后一个层级的DFA状态。
所述已完成的DFA状态指除前述未完成DFA状态之外的DFA状态。
所述头部半成品DFA指由前述未完成DFA状态及所有已完成DFA状态构建的DFA。
所述尾部NFA指所有预设正则表达式对应的NFA状态中,除前述用于构建目标DFA状态之外的所有NFA状态。
在实施中,可以通过分层模式,即基于前述目标DFA状态、每个子DFA状态、每个次级DFA状态及各DFA状态对应的层级,按照各层级由低到高的顺序,构造目标混合有限自动机。具体的,可以将目标DFA状态的层级默认为第一层,目标DFA状态的各个子DFA状态的层级设置为第二层,目标DFA状态的第一个子DFA状态的次级子DFA状态的层级设置为第三层,目标DFA状态的第二个子DFA状态的次级子DFA状态的层级设置为第四层,以此类推,可以得到每个DFA状态对应的层级。然后,可以将最后一个层级的DFA状态标记为未完成DFA状态,其他层级的DFA状态均标记为已完成DFA状态。之后,可以按照前述各个DFA状态对应的层级,按照层级从低到高的顺序构建头部半成品DFA。然后,可以确定除前述用于生成目标DFA状态的部分NFA状态之外的所有NFA状态,并将每一个除前述用于生成目标DFA状态的部分NFA状态之外的NFA状态标记为尾部NFA。之后,可以基于前述头部DFA及尾部NFA生成半成品DFA自动机,即目标混合有限自动机。这样,基于头部半成品DFA和所有尾部NFA状态构建目标混合有限自动机,在通过该目标混合有限自动机对待匹配数据进行匹配时,可以更多的通过头部半成品DFA进行匹配,从而可以进一步提高匹配性能,
以目标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均标记为第五层级。然后,可以将第五层级,即DFA状态D3,标记为未完成DFA状态,并将其他层级,即第一到第四层级的DFA状态,均标记为已完成DFA状态,并按照层级由低到高的顺序基于前述所有已完成DFA状态及未完成DFA状态构建头部半成品DFA,如图2所示。之后,假设有10个预设正则表达式,则对应有10个NFA状态,若构建目标DFA状态时是基于其中7个构建的,则可以确定除10个NFA状态中除前述7个之外的3个NFA状态,并将这3个NFA状态标记为尾部NFA。然后,可以基于前述头部半成品DFA及前述3个尾部NFA,构建目标混合有限自动机,如图3所示。需要说明的是,由于3个尾部NFA未能参与目标DFA的构建,故而,尾部NFA在头部半成品DFA中可能对应有DFA状态,所以,图3中尾部NFA与头部半成品DFA采用虚线连接,以表示尾部NFA与头部半成品DFA中的DFA状态可能存在的转化关系。
如图4所示,为本发明实施例提供的一个优选实施例的流程图。首先,可以将每个预设正则表达式转换为用计算性算子表示目标正则表达式,再将每个目标正则表达式转化为抽象语法树。然后,用Thompson算法将每个抽象语法树转化为NFA状态,再基于部分NFA状态通过子集构造法生成目标DFA状态。之后,将该目标DFA状态加入队列,并判断当前是否满足预设限制条件,如果不满足,则基于目标DFA状态及未用到的NFA状态创建目标混合有限自动机,如果满足,则判断队列中是否存在DFA状态,此时队列中有目标DFA状态,故而,可以创建该目标DFA状态对应的子DFA状态,将子DFA状态加入临时队列,并将目标DFA状态从队列中删除。之后,再判断当前是否满足预设限制条件,同样的,如果不满足,则基于以创建的每个DFA状态及未用到的NFA状态创建目标混合有限自动机。如果满足,则判断队列中是否存在DFA状态,此时目标DFA状态已从队列删除,队列为空。然后,可以判断临时队列是否有DFA状态,由于前边已将子DFA状态加入临时队列,所以此时临时队列有DFA状态。之后,可以将临时队列的DFA状态移入队列中,再判断当前是否满足预设限制条件,以此类推。直至不满足预设限制条件或者队列和临时队列均无DFA状态,则于目标DFA状态、前述创建的各个子DFA状态及未用到的NFA状态创建目标混合有限自动机。
进一步地,在上述方法实施例的基础上,可以基于前述目标混合有限自动机逐层执行匹配任务,相应的,上述步骤S104的部分处理可以如下:通过目标混合有限自动机的当前DFA状态执行匹配任务,并确定当前DFA状态是否为未完成DFA状态;如果是,则判断是否存在与未完成的DFA状态对应的目标尾部NFA状态;否则,继续由下一级DFA状态执行匹配任务,并确定下一级DFA状态是否为未完成DFA状态。
其中,目标尾部NFA状态指:与目标混合有限自动机中被标记为未完成DFA状态的层级中的DFA状态,对应的尾部NFA状态。
在实施中,可以基于上述生成的目标混合有限自动机中的各层DFA状态及尾部NFA状态逐层执行匹配任务。具体的,首先,可以由上述目标混合有限自动机的头部半成品DFA中的第一层DFA状态执行匹配任务。然后再判断前述第一层DFA状态是否被标记为未完成DFA状态。如果第一层DFA状态已经被标记为未完成DFA状态,则可以认为该层DFA状态也是头部半成品DFA中的最后一层。然后,可以判断目标混合有限自动机的尾部NFA中是否存在与前述最后一层DFA状态对应的目标NFA状态,以确定是否由尾部NFA继续执行匹配任务。如果第一层DFA状态被标记为已完成DFA状态,而不是未完成状态,则可以继续由第二层级的DFA状态执行匹配任务,再确定第二层级的DFA状态是否被标记为未完成状态,以此类推,直至判断到某一层级的DFA状态是未完成状态,再判断目标混合有限自动机的尾部NFA中是否存在,以确定是否由尾部NFA继续执行匹配任务。这样,通过目标混合有限自动机的头部半成品DFA中的多层DFA状态对网络数据包进行多次匹配,可以有效过滤掉待匹配数据中的大量字符串,从而可以进一步提高对待匹配数据进行匹配的匹配结果的准确性。
进一步地,在上述方法实施例的基础上,在基于目标混合有限自动机执行匹配任务时,每一层级的DFA状态执行匹配之后,都需要先判断是否匹配成功,相应的处理可以如下:确定DFA状态是否匹配成功,如果是,则确定当前DFA状态是否为未完成DFA状态,否则,停止匹配。
在实施中,在基于目标混合有限自动机执行匹配任务时,是按照各个DFA状态的层级顺序依次执行匹配任务的。且每次DFA状态进行匹配时,都会出现匹配成功和匹配失败的状态,故而,在每一层DFA状态进行匹配之后,可以判断当前DFA状态的匹配任务是否成功匹配,如果成功匹配,则可以确定该DFA状态的层级是否被标记为未完成DFA状态。如果匹配失败,则返回结果false,并停止匹配,本次匹配任务结束。这样,仅在DFA状态匹配成功时,确定当前DFA状态是否是未完成DFA状态,可以在一定程度上减少确定当前DFA状态是否是未完成DFA状态的处理次数,从而可以进一步的提高匹配速率。
进一步地,在上述实施例的基础上,在当前DFA状态的层级被标记为未完成DFA状态时,则需要判断是否存在与该DFA状态对应的尾部NFA状态。相应的处理可以如下:若是,则获取目标尾部NFA状态,并确定与目标尾部NFA状态对应的DFA状态,并由与目标尾部NFA状态对应的DFA状态执行匹配任务。否则,停止匹配。
在实施中,在基于目标混合有限自动机执行匹配任务时,若当前DFA状态的层级被标记为未完成DFA状态时,则需要判断该目标混合有限自动机的尾部NFA中,是否存在与该DFA状态对应的目标尾部NFA状态。具体的,如果目标混合有限自动机的尾部NFA中存在与该DFA状态对应的目标尾部NFA状态,则可以继续确定前述头部DFA中与该目标尾部NFA状态对应的DFA状态,由该DFA状态继续执行匹配任务。如果目标混合有限自动机的尾部NFA中不存在与该DFA状态对应的目标尾部NFA状态,则返回结果false,并停止匹配,匹配任务结束。这样,在目标尾部NFA状态对应有DFA状态,由该DFA状态执行匹配,可以进一步提高匹配结果的准确性和匹配效率。
进一步地,在上述实施例的基础上,当存在目标尾部NFA状态时,还需要判断是否存在与该目标尾部NFA状态对应的NFA状态,相应的处理可以如下:判断是否存在与目标尾部NFA状态对应的DFA状态;如果是,则由与目标尾部NFA状态对应的DFA状态继续执行匹配任务,否则,由目标尾部NFA状态执行匹配任务。
在实施中,在基于上述目标混合有限自动机执行匹配任务,且已跳转至与目标混合有限自动机的尾部NFA中,与目标混合有限自动机的头部半成品DFA的最后一层级的DFA状态对应的目标尾部NFA状态时,在通过该目标尾部NFA状态执行匹配任务之前,还可以先判断目标混合有限自动机的头部半成品DFA中是否存在与该目标尾部NFA状态对应的DFA状态。如果有,则可以跳转至该与目标尾部NFA状态对应的DFA状态执行匹配任务。否则,则由该目标尾部NFA状态执行匹配任务。这样,可以尽可能的使用DFA状态执行匹配任务,从而可以进一步的提高正则表达式的匹配性能。
如图5所示,为本发明实施例提供的一种优选实施例的流程图,采用目标混合有限自动机的头部半成品DFA的当前DFA状态执行匹配任务。如果匹配失败,则匹配结束,返回结果false。如果匹配成功,则判断该DFA状态是否处于未完成DFA状态,如果不是,则转由下一层DFA状态继续执行匹配任务,如果是,则判断是否有该DFA状态对应的目标尾部NFA状态。如果没有该DFA状态对应的目标尾部NFA状态,则匹配结束,如果有该DFA状态对应的目标尾部NFA状态,则需要判断是否存在与该目标尾部NFA状态对应的其他DFA状态。如果存在,则转到与该目标尾部NFA状态对应的其他DFA状态继续执行匹配任务,否则,采用该目标尾部NFA状态执行匹配任务。
进一步地,在上述方法实施例的基础上,本发明实施例还提供了一种基于正则表达式的匹配装置,如图6所示,所述基于正则表达式的匹配装置,包括转化模块601、创建模块602、判断模块603及生成模块604,其中:
所述转化模块601,用于将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态;
所述创建模块602,用于当所述目标DFA状态对应有子DFA状态时,创建所述目标DFA状态对应的所有子DFA状态,并判断每个子DFA状态是否对应有次级子DFA状态;
所述判断模块603,用于如果是,则创建每个子DFA状态对应的所有次级子DFA状态,并判断每个次级子DFA状态是否对应有下一层级的次级子DFA状态;
所述生成模块604,用于如果否,则基于所述目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除所述部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于所述目标混合有限自动机对待匹配数据进行匹配。
进一步地,所述转化模块601,用于:
对每个预设正则表达式进行格式转换,得到对应的目标正则表达式,其中每个目标正则表达式均用计算性算子表示;
将所述每个目标正则表达式转化为抽象语法树,并将每个抽象语法树转化为对应的NFA状态。
进一步地,所述生成模块604,用于:
将所述目标DFA状态、每个子DFA状态、每个次级子DFA状态中的最后一级DFA状态标记为未完成DFA状态,将除所述未完成DFA状态之外的每级所有DFA状态标记为已完成DFA状态;
按照每个DFA状态对应的层级顺序,基于所述未完成DFA状态及所有已完成DFA状态,构建头部半成品DFA;
将除所述部分NFA状态之外的每个NFA状态标记为尾部NFA,并基于所述头部半成品DFA及所有尾部NFA状态,生成目标混合有限自动机。
进一步地,如图7所示,所述基于正则表达式的匹配装置,还包括匹配模块605,用于:
通过所述目标混合有限自动机的当前DFA状态执行匹配任务,并确定当前DFA状态是否为未完成DFA状态;
如果是,则判断是否存在与所述未完成的DFA状态对应的目标尾部NFA状态;否则,继续由下一级DFA状态执行匹配任务,并确定所述下一级DFA状态是否为未完成DFA状态。
进一步地,所述匹配模块605,用于:
确定所述DFA状态是否匹配成功,如果是,则确定所述当前DFA状态是否为未完成DFA状态,否则,停止匹配。
进一步地,所述匹配模块605,用于:
若是,则获取所述目标尾部NFA状态,并确定与所述目标尾部NFA状态对应的DFA状态,并由与所述目标尾部NFA状态对应的DFA状态执行匹配任务。否则,停止匹配。
进一步地,所述匹配模块605,用于:
判断是否存在与所述目标尾部NFA状态对应的DFA状态;
如果是,则由与所述目标尾部NFA状态对应的DFA状态继续执行匹配任务,否则,由所述目标尾部NFA状态执行匹配任务。
本实施例所述的基于正则表达式的匹配装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。
如图8所示,本发明实施例还提供了一种电子设备,所述电子设备可以包括:处理器(processor)801、存储器(memory)802和总线803;
其中,
所述处理器801和存储器802通过所述总线803完成相互间的通信;
所述处理器801用于调用所述存储器802中的程序指令,以执行上述各方法实施例所提供的方法。
此外,上述的存储器802中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述方法实施例所提供的方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (16)
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.一种基于正则表达式的匹配装置,其特征在于,包括转化模块、创建模块、判断模块及生成模块,其中:
所述转化模块,用于将每个预设正则表达式转化为对应的非确定有穷自动机NFA状态,基于部分NFA状态生成目标确定有穷自动机DFA状态;
所述创建模块,用于当所述目标DFA状态对应有子DFA状态时,创建所述目标DFA状态对应的所有子DFA状态,并判断每个子DFA状态是否对应有次级子DFA状态;
所述判断模块,用于如果是,则创建每个子DFA状态对应的所有次级子DFA状态,并判断每个次级子DFA状态是否对应有下一层级的次级子DFA状态;
所述生成模块,用于如果否,则基于所述目标DFA状态、每个子DFA状态、每个次级子DFA状态,及除所述部分NFA状态之外的所有NFA状态,生成目标混合有限自动机,以基于所述目标混合有限自动机对待匹配数据进行匹配。
9.根据权利要求8所述的基于正则表达式的匹配装置,其特征在于,所述转化模块,用于:
对每个预设正则表达式进行格式转换,得到对应的目标正则表达式,其中每个目标正则表达式均用计算性算子表示;
将所述每个目标正则表达式转化为抽象语法树,并将每个抽象语法树转化为对应的NFA状态。
10.根据权利要求8所述的基于正则表达式的匹配装置,其特征在于,所述生成模块,用于:
将所述目标DFA状态、每个子DFA状态、每个次级子DFA状态中的最后一级DFA状态标记为未完成DFA状态,将除所述未完成DFA状态之外的每级所有DFA状态标记为已完成DFA状态;
按照每个DFA状态对应的层级顺序,基于所述未完成DFA状态及所有已完成DFA状态,构建头部半成品DFA;
将除所述部分NFA状态之外的每个NFA状态标记为尾部NFA,并基于所述头部半成品DFA及所有尾部NFA状态,生成目标混合有限自动机。
11.根据权利要求8所述的基于正则表达式的匹配装置,其特征在于,所述基于正则表达式的匹配装置,还包括匹配模块,用于:
通过所述目标混合有限自动机的当前DFA状态执行匹配任务,并确定当前DFA状态是否为未完成DFA状态;
如果是,则判断是否存在与所述未完成的DFA状态对应的目标尾部NFA状态;否则,继续由下一级DFA状态执行匹配任务,并确定所述下一级DFA状态是否为未完成DFA状态。
12.根据权利要求11所述的基于正则表达式的匹配装置,其特征在于,所述匹配模块,用于:
确定所述DFA状态是否匹配成功,如果是,则确定所述当前DFA状态是否为未完成DFA状态,否则,停止匹配。
13.根据权利要求11所述的基于正则表达式的匹配装置,其特征在于,所述匹配模块,用于:
若是,则获取所述目标尾部NFA状态,并确定与所述目标尾部NFA状态对应的DFA状态,并由与所述目标尾部NFA状态对应的DFA状态执行匹配任务,否则,停止匹配。
14.根据权利要求13所述的基于正则表达式的匹配装置,其特征在于,所述匹配模块,用于:
判断是否存在与所述目标尾部NFA状态对应的DFA状态;
如果是,则由与所述目标尾部NFA状态对应的DFA状态继续执行匹配任务,否则,由所述目标尾部NFA状态执行匹配任务。
15.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述的基于正则表达式的匹配方法的步骤。
16.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述的基于正则表达式的匹配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010042993.4A CN111222022B (zh) | 2020-01-15 | 2020-01-15 | 一种基于正则表达式的匹配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010042993.4A CN111222022B (zh) | 2020-01-15 | 2020-01-15 | 一种基于正则表达式的匹配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111222022A true CN111222022A (zh) | 2020-06-02 |
CN111222022B CN111222022B (zh) | 2023-05-12 |
Family
ID=70811103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010042993.4A Active CN111222022B (zh) | 2020-01-15 | 2020-01-15 | 一种基于正则表达式的匹配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111222022B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115313A (zh) * | 2020-09-08 | 2020-12-22 | 北京百度网讯科技有限公司 | 正则表达式的生成、数据提取方法、装置、设备及介质 |
CN112712125A (zh) * | 2020-12-31 | 2021-04-27 | 山石网科通信技术股份有限公司 | 事件流的模式匹配方法、装置、存储介质及处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003242179A (ja) * | 2002-02-05 | 2003-08-29 | Internatl Business Mach Corp <Ibm> | 文字列照合方法、これを用いた文書処理装置及びプログラム |
CN103166802A (zh) * | 2011-12-12 | 2013-06-19 | 中国移动通信集团湖南有限公司 | 一种确定有限自动机的构建方法及装置 |
US20140101187A1 (en) * | 2012-10-10 | 2014-04-10 | H. Jonathan Chao | Using a tunable finite automaton for regular expression matching |
CN107016091A (zh) * | 2017-04-06 | 2017-08-04 | 北京邮电大学 | 一种软件定义网络中正则表达式更新方法及装置 |
-
2020
- 2020-01-15 CN CN202010042993.4A patent/CN111222022B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003242179A (ja) * | 2002-02-05 | 2003-08-29 | Internatl Business Mach Corp <Ibm> | 文字列照合方法、これを用いた文書処理装置及びプログラム |
CN103166802A (zh) * | 2011-12-12 | 2013-06-19 | 中国移动通信集团湖南有限公司 | 一种确定有限自动机的构建方法及装置 |
US20140101187A1 (en) * | 2012-10-10 | 2014-04-10 | H. Jonathan Chao | Using a tunable finite automaton for regular expression matching |
CN107016091A (zh) * | 2017-04-06 | 2017-08-04 | 北京邮电大学 | 一种软件定义网络中正则表达式更新方法及装置 |
Non-Patent Citations (1)
Title |
---|
乔登科;柳厅文;孙永;郭莉;: "一种获得有限自动机状态间关系的高效算法" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115313A (zh) * | 2020-09-08 | 2020-12-22 | 北京百度网讯科技有限公司 | 正则表达式的生成、数据提取方法、装置、设备及介质 |
CN112115313B (zh) * | 2020-09-08 | 2023-07-28 | 北京百度网讯科技有限公司 | 正则表达式的生成、数据提取方法、装置、设备及介质 |
CN112712125A (zh) * | 2020-12-31 | 2021-04-27 | 山石网科通信技术股份有限公司 | 事件流的模式匹配方法、装置、存储介质及处理器 |
CN112712125B (zh) * | 2020-12-31 | 2022-09-06 | 山石网科通信技术股份有限公司 | 事件流的模式匹配方法、装置、存储介质及处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN111222022B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111222022B (zh) | 一种基于正则表达式的匹配方法及装置 | |
CN111181980B (zh) | 一种面向网络安全的正则表达式的匹配方法及装置 | |
JP2003280924A (ja) | 通信設備で階層構造を有するイベントの処理方法 | |
CN111355696A (zh) | 一种报文识别方法、装置、dpi设备及存储介质 | |
CN107888446A (zh) | 一种协议健壮性测试方法及装置 | |
CN113935487A (zh) | 可视化卫星故障诊断知识的生成方法、装置及系统 | |
CN112596801B (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
CN116248337A (zh) | 一种基于测试用例自动化生成的协议模糊测试方法及装置 | |
US6516306B1 (en) | Model checking of message flow diagrams | |
CN103503388A (zh) | 一种分布式队列消息读取方法及设备、系统 | |
Varshosaz et al. | Modeling and verification of probabilistic actor systems using pRebeca | |
CN113282606A (zh) | 数据处理方法、装置、存储介质和计算设备 | |
CN115392048B (zh) | 一种基于约束求解引擎的带约束随机数生成方法 | |
CN114490193B (zh) | 一种面向异构冗余系统的恢复方法及装置 | |
Wever et al. | Active coevolutionary learning of requirements specifications from examples | |
CN112015426A (zh) | 一种代码管理方法、装置及设备 | |
CN112269796A (zh) | 一种数据检索方法及相关装置 | |
CN111596893A (zh) | 软件需求抽取方法、装置、计算机设备和可读存储介质 | |
JPWO2008152910A1 (ja) | ワークフロー定義変更プログラムおよびワークフロー定義変更方法 | |
CN112800185B (zh) | 移动终端中界面结点的匹配文本生成、匹配方法及装置 | |
EP4398152A1 (en) | Analytics platform optimisation | |
CN101651571B (zh) | 端口解析方法和设备 | |
CN113703733A (zh) | 对象键值清除方法、装置、电子设备及存储介质 | |
CN116187306A (zh) | 一种基于图文法的图模糊语法结构处理方法 | |
CN118349233A (zh) | 决策引擎的循环依赖检测方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088 Applicant after: QAX Technology Group Inc. Applicant after: Qianxin Wangshen information technology (Beijing) Co.,Ltd. Address before: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088 Applicant before: QAX Technology Group Inc. Applicant before: LEGENDSEC INFORMATION TECHNOLOGY (BEIJING) Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |