CN117312498A - 一种正则匹配电路、匹配方法、fpga芯片 - Google Patents
一种正则匹配电路、匹配方法、fpga芯片 Download PDFInfo
- Publication number
- CN117312498A CN117312498A CN202311332982.XA CN202311332982A CN117312498A CN 117312498 A CN117312498 A CN 117312498A CN 202311332982 A CN202311332982 A CN 202311332982A CN 117312498 A CN117312498 A CN 117312498A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- regular expression
- address
- expression signal
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000014509 gene expression Effects 0.000 claims abstract description 358
- 238000001514 detection method Methods 0.000 claims description 24
- 239000003990 capacitor Substances 0.000 claims 7
- 238000010586 diagram Methods 0.000 description 8
- 238000007689 inspection Methods 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/3332—Query translation
- G06F16/3338—Query expansion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供的一种正则匹配电路、匹配方法、FPGA芯片,包括:模式判断模块的输入端用于连接存储设备,输出端与比较模块的使能端电连接,用于获取正则表达式信号,根据正则表达式信号确定是否发送使能信号;比较模块的第一输入端用于连接存储设备,第二输入端用于连接缓存模块,输出端与处理模块的第一输入端电连接,用于在接收到使能信号时,获取第一数据,第二数据,对第一数据与第二数据进行比较,向处理模块发送比较结果;处理模块的第二输入端用于连接存储设备第三输入端用于连接缓存模块,第一输出端与模式判断模块电连接,第二输出端用于连接存储设备,用于获取正则表达式信号及比较结果,根据正则表达式信号及比较结果,确定数据路径。
Description
技术领域
本申请涉及数据处理技术领域,具体地涉及一种正则匹配电路、匹配方法、FPGA芯片。
背景技术
正则表达式是对字符串和特殊字符操作的一种逻辑公式,利用预先定义的特定字符及特定字符的组合,组成规则字符串,该规则字符串用来表达对字符串的一种逻辑过滤。正则表达式实质上是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
在一些技术中通过软件算法执行正则表达式的匹配,例如通过有限状态自动机进行正则表达式的匹配。上述匹配方式在匹配的数据较多时,耗费资源较多,匹配速度较慢。
发明内容
有鉴于此,本申请提供一种正则匹配电路、匹配方法、FPGA芯片,以利于解决现有技术中耗费资源多,匹配速度慢的问题。
第一方面,本申请实施例提供了一种正则匹配电路,包括:模式判断模块,比较模块,处理模块;其中,所述模式判断模块的输入端用于连接存储设备,所述模式判断模块的输出端与所述比较模块的使能端电连接;所述模式判断模块,用于获取正则表达式信号,并根据所述正则表达式信号确定是否为所述比较模块发送使能信号;这样,模拟判断模块的设计灵活度高并且使用的资源比较少,减少了部分正则表达式对应下的比较过程。
所述比较模块的第一输入端用于连接所述存储设备,所述比较模块的第二输入端用于连接缓存模块,所述比较模块的输出端与所述处理模块的第一输入端电连接;所述比较模块,用于在接收到使能信号时,从所述存储设备中获取第一数据并从缓存模块中获取第二数据,对所述第一数据与第二数据进行比较并将比较结果发送至处理模块;所述比较结果用于表征所述第一数据及第二数据是否匹配;
所述处理模块的第二输入端用于连接所述存储设备,所述处理模块的第三输入端用于连接缓存模块,所述处理模块的第一输出端与所述模式判断模块电连接,所述处理模块的第二输出端用于连接所述存储设备;所述处理模块,用于接收所述比较结果并获取正则表达式信号,根据所述正则表达式信号及所述比较结果,确定数据路径。
在第一方面的一种可能的实现方式中,所述模式判断模块,用于若所述正则表达式信号是第一目标正则表达式信号,则不向所述比较模块发送使能信号,或者,若所述正则表达式信号是第二目标正则表达式信号,则向所述比较模块发送使能信号。
在第一方面的一种可能的实现方式中,所述第一目标正则表达式信号为:任意数据且不限次数模式、任意数据且重复任意次、任意数据重复至多n次、任意数据重复至少n次、忽略n个数据不检查,一种或多种组合,其中,n为大于0的整数。
在第一方面的一种可能的实现方式中,所述模式判断模块,用于在所述正则表达式信号为第一目标正则表达式信号时,将检测标签设置为第一标签值,并将所述检测标签发送至所述处理模块;
所述处理模块,用于接收所述检测标签,获取所述正则表达式信号中对应的第一数据,并在所述缓存模块中获取第二数据,检测所述第二数据是否与所述第一数据匹配;
若匹配,则将所述检测标签更新为第二标签值,并将所述第一数据对应的第一地址确定为下一跳转地址。
在第一方面的一种可能的实现方式中,所述处理模块,用于在所述第二数据与所述第一数据不匹配时,则重新在所述缓存模块中获取第二数据,检测所述第二数据是否与所述第一数据匹配,直至重新获取的所述第二数据与所述第一数据匹配;
若重新获取的所述第二数据与所述第一数据匹配,则将所述检测标签更新为第二标签值,并将所述第一数据对应的第一地址确定为下一跳转地址。
在第一方面的一种可能的实现方式中,还包括第一计数模块;
所述处理模块的第四输入端与所述第一计数模块的输出端电连接,所述处理模块的第三输出端与第一计数模块的控制端电连接;
所述处理模块,用于在每次获取所述缓存模块的第二数据时更新所述第一计数模块的计数值;在所述第二数据与所述第一数据不匹配时,根据所述第一计数模块确定获取缓存模块中第二数据的执行次数,若获取所述第二数据的执行次数达到所述正则表达式信号中设定的次数,则将所述检测标签更新为第二标签值,并将所述第一数据对应的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;或者,
若所述第二数据的执行次数未达到所述正则表达式信号中设定的次数,则重新在所述缓存模块中获取第二数据,更新第一计数模块的计数值,并检测所述第二数据是否与所述第一数据匹配,直至所述第二数据与所述第一数据匹配或所述第二数据的执行次数达到所述正则表达式信号中设定的次数。
在第一方面的一种可能的实现方式中,所述处理模块,用于在所述正则表达式信号包括忽略n个数据不检查的信号时,根据所述正则表达信号获取所述缓存模块中的第n+1个第二数据;其中,n为大于0的整数。
在第一方面的一种可能的实现方式中,所述处理模块,用于在所述比较结果表征所述第一数据与第二数据匹配,所述正则表达式信号中不存在重复执行参数时,则将所述第一数据对应的第一地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;其中所述下一跳转地址是指所述存储设备重新获取第一数据时,需重新获取的第一数据的存储地址。
在第一方面的一种可能的实现方式中,所述处理模块,用于在所述比较结果表征所述第一数据与第二数据匹配,所述正则表达式信号中存在重复执行参数,且获取第二数据的执行次数达到n次时,若n次获取的所述第二数据均有相匹配的第一数据,则将所述第一数据对应的第一地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址,其中,所述n为正则表达式信号中重复执行参数的值,n为大于0的整数;或者,
若n次获取的所述第二数据中存在至少一个未有匹配的第一数据,则将所述第一数据对应的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;所述第一数据对应的第二地址与所述第一数据对应的第一地址不同。
在第一方面的一种可能的实现方式中,所述处理模块,用于在所述比较结果表征所述第一数据与第二数据匹配,所述正则表达式信号中存在重复执行参数且获取所述第二数据的执行次数未达到n次时,则将起始地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,向所述缓存模块发送第二数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,从所述缓存模块中获取第二数据,直至获取所述第二数据的执行次数达到n次,其中,所述n为正则表达式信号中重复执行参数的值,n为大于0的整数,起始地址是指所述正则表达式信号对应的首次获取的第一数据的存储地址。
在第一方面的一种可能的实现方式中,所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中不存在重复执行参数,且不存在所述第一数据对应的目标重复运算信息时,则将所述第一数据对应的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;其中,所述目标重复运算信息是在所述正则表达式信号中与所述第一数据相邻且位于所述第一数据之后的重复运算信息;或者,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中不存在重复执行参数,且存在所述第一数据对应的目标重复运算信息时,则根据预设更新方式更新所述下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,直至在所述正则表达式信号中不存在所述第一数据对应的目标重复运算信息,或重新获取的第一数据与所述第二数据相匹配。
在第一方面的一种可能的实现方式中,所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中存在重复执行参数,且不存在所述第一数据对应的目标重复运算信息时,若获取第二数据的执行次数达到n次,则将所述第一数据的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;或者,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中存在重复执行参数,且不存在所述第一数据对应的目标重复运算信息时,若获取第二数据的执行次数未达到n次,则记录当前次获取的第二数据与对应的第一数据不匹配,且将起始地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,向所述缓存模块发送第二数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,从所述缓存模块中获取第二数据,直至获取所述第二数据的执行次数达到n次或所述第二数据与对应的第一数据相匹配,其中,所述n为正则表达式信号中重复执行参数的值,n为大于0的整数,起始地址是指所述正则表达式对应的首次获取的第一数据的存储地址。
在第一方面的一种可能的实现方式中,所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中存在重复执行参数,且存在所述第一数据对应的目标重复运算信息时,记录当前次获取的第一数据与所述第二数据不匹配,且根据预设更新方式更新下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,直至在所述正则表达式信号中不存在所述第一数据对应的目标重复运算信息或重新获取的第一数据与所述第二数据相匹配;
在所述正则表达式信号中不存在所述第一数据对应的目标重复运算信息时,检测获取第二数据的执行次数是否达到n次;其中,所述n为正则表达式信号中重复执行参数的值,n为大于0的整数;
若获取第二数据的执行次数达到n次,则将所述第一数据的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;或者,
若获取第二数据的执行次数未达到n次,则将起始地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,向所述缓存模块发送第二数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,从所述缓存模块中获取第二数据,直至获取所述第二数据的执行次数达到n次或所述第二数据与对应的第一数据相匹配,其中,起始地址是指所述正则表达式对应首次获取的第一数据的存储地址。
在第一方面的一种可能的实现方式中,还包括:第二计数模块;
所述处理模块的第五输入端与所述第二计数模块的输出端电连接,所述处理模块的第四输出端与第二计数模块的控制端电连接;
所述处理模块,用于在每次获取第二数据时更新所述第二计数模块的计数值,并根据所述第二计数模块的计数值确定获取第二数据的执行次数。
在第一方面的一种可能的实现方式中,所述缓存模块包括缓存单元及数据捕获单元中的至少一个。
即为在本申请实施例中正则表达式信号可以是任意数据且不限次数模式、任意数据且重复任意次、任意数据重复至多n次、任意数据重复至少n次、忽略n个数据不检查,一种或多种组合,或者可以是第一数据或第二数据模式、第一数据或第二数据且不限次数模式、第一数据或第二数据且重复任意次、第一数据或第二数据且重复至多n次、第一数据或第二数据且重复最少n次中的一种或多种组合,其中,第一数据与第二数据不同。或者正则表达式信号还可以是上述模式间的任意组合形成的新模式。这样一来,本申请实施例中的正则匹配电路可以实现多种正则表达式信号的匹配,并且在匹配成功时,可以确定匹配成功时的数据路径,在匹配失败时,可以确定匹配失败时的数据路径,大大提高了正则匹配电路的灵活性,减少了部分正则表达式对应下的比较过程从而降低了使用的资源,提高了匹配速度,进而提高了匹配效率。
第二方面,本申请实施例提供了一种正则匹配方法,应用于上述第一方面任一项所述的实施例所述的正则匹配电路,所述方法包括:
模式判断模块获取正则表达式信号,并根据所述正则表达式信号确定是否为比较模块发送使能信号;
比较模块在接收到使能信号时,从所述存储设备中获取第一数据并从缓存模块中获取第二数据,对所述第一数据与第二数据进行比较,将比较结果发送至处理模块;所述比较结果用于表征所述第一数据及第二数据是否匹配;
处理模块接收所述比较结果并获取正则表达式信号,根据所述正则表达式信号及所述比较结果,确定数据路径。
第三方面,本申请实施例提供了一种FPGA芯片,包括上述第一方面任一项所述的正则匹配电路。
采用本申请实施例所提供的方案,模式判断模块在获取到正则表达式信号时,可以根据正则表达式信号确定是否为比较模块发送使能信号;比较模块在接收到比较信号时可以在存储设备中获取第一数据并在缓存模块中接收第二数据,并比较第一数据及第二数据是否匹配,将比较结果发送至处理模块。处理模块可以根据比较结果、正则表达式信号确定数据路径。即为,在本申请实施例中可以通过模式判断模块、比较模块及处理模实现正则表达式的匹配,确定出数据路径使用的资源较少,并且灵活性较高,匹配速度较快,提高了电路的匹配效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种正则匹配电路的结构示意图;
图2为本申请实施例提供的另一种正则匹配电路的结构示意图;
图3为本申请实施例提供的另一种正则匹配电路的结构示意图;
图4为本申请实施例提供的另一种正则匹配电路的结构示意图;
图5为本申请实施例提供的另一种正则匹配电路的结构示意图;
图6为本申请实施例提供的另一种正则匹配电路的结构示意图;
图7为本申请实施例提供的一种正则匹配方法的流程示意图。
具体实施方式
为了更好的理解本申请的技术方案,下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,甲和/或乙,可以表示:单独存在甲,同时存在甲和乙,单独存在乙这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在一些技术中通过软件算法执行正则表达式的匹配,例如通过有限状态自动机进行正则表达式的匹配。上述匹配方式在匹配的数据较多时,耗费资源较多,匹配速度较慢。
针对上述问题,本申请实施例提供了一种正则匹配电路,正则匹配电路包括模式判断模块,比较模块,处理模块;其中,模式判断模块的输入端用于连接存储设备,模式判断模块的输出端与比较模块的使能端电连接;模式判断模块,用于获取正则表达式信号,并根据正则表达式信号确定是否为比较模块发送使能信号;比较模块的第一输入端用于连接存储设备,比较模块的第二输入端用于连接缓存模块,比较模块的输出端与处理模块的第一输入端电连接;比较模块,用于在接收到使能信号时,从存储设备中获取第一数据并从缓存模块中获取第二数据,对第一数据与第二数据进行比较并将比较结果发送至处理模块;比较结果用于表征所述第一数据及第二数据是否匹配;处理模块的第二输入端用于连接存储设备,处理模块的第三输入端用于连接缓存模块,处理模块的第一输出端与模式判断模块电连接,处理模块的第二输出端用于连接存储设备;处理模块,用于接收比较结果并获取正则表达式信号,根据正则表达式信号及比较结果,确定数据路径。这样一来,在本申请实施例中模式判断模块在获取到正则表达式信号时,可以根据正则表达式信号确定是否为比较模块发送使能信号;比较模块在接收到比较信号时可以在存储设备中获取第一数据并在缓存模块中接收第二数据,并比较第一数据及第二数据是否匹配,将比较结果发送至处理模块。处理模块可以根据比较结果、正则表达式信号确定数据路径。即为,在本申请实施例中可以通过模式判断模块、比较模块及处理模实现正则表达式的匹配,确定出数据路径使用的资源较少,并且灵活性较高,匹配速度较快,提高了电路的匹配效率。以下进行详细说明。
参见图1,为本申请实施例提供的一种正则匹配电路的结构示意图。如图1所示,正则匹配电路包括:模式判断模块101,比较模块102,处理模块103。其中,所述的正则匹配电路还可以包括存储设备和缓存模块,所述的缓存模块的存储方式可以为FIFO(First InputFirst Output,先进先出)。模式判断模块101的输入端用于连接存储设备,模式判断模块102的输出端与比较模块102的使能端电连接。模式判断模块101,用于获取正则表达式信号,并根据正则表达式信号确定是否为比较模块发送使能信号。
比较模块102的第一输入端用于连接存储设备,比较模块102的第二输入端用于连接缓存模块,比较模块102的输出端与处理模块103的第一输入端电连接。比较模块102,用于在接收到使能信号时,从存储设备中获取第一数据并从缓存模块中获取第二数据,对第一数据与第二数据进行比较并将比较结果发送至处理模块103。
其中,比较结果用于表征第一数据及第二数据是否匹配。
处理模块103的第二输入端用于连接存储设备,处理模块103的第三输入端用于连接缓存模块,处理模块103的第一输出端与模式判断模块101电连接,处理模块103的第二输出端用于连接存储设备。
处理模块103,用于接收比较结果并获取正则表达式信号,根据正则表达式信号及比较结果,确定数据路径。
在本申请实施例中,由于并不是所有的正则表达式信号均需要将存储设备中的数据及缓存模块中的数据进行匹配,因此,在接收到正则表达式信号时,需要判断是否需要进行存储设备中的数据与缓存模块中的数据的比较。基于此,模式判断模块101获取正则表达式信号,可以检测其获取的正则表达式是否需要进行存储设备中的数据及缓存模块中的数据的匹配比较。若需要进行匹配,则模式判断模块确定向比较模块102发送使能信号。
在一些实施例中,模式判断模块101用于若正则表达式信号是第一目标正则表达式信号,则不向比较模块发送使能信号,或者,若正则表达式信号是第二目标正则表达式信号,则向比较模块发送使能信号。
即为,在模式判断模块101中可以预先设置第一目标正则表达式信号和/或第二目标正则表达式信号。其中,第一目标正则表达式信号是无需进行数据匹配的正则表达式信号。第二目标正则表达式信号是除第一目标正则表达式信号之外的正则表达式信号。在模式判断模块101中可以预先设置第一目标正则表达式,即为,可以预先设置无需进行数据匹配的正则表达式信号。此时,模式判断模块101在获取到正则表达式信号后,可以将正则表达式信号与其内预先设置的第一目标正则表达式信号进行比较,若获取的正则表达式信号不是第一目标正则表达式信号,则说明需要比较模块102进行正则表达式信号的数据比较,此时模式判断模块101向比较模块102发送使能信号。若获取的正则表达式信号是第一目标正则表达式信号,则说明不需要比较模块102进行正则表达式信号的数据比较,此时模式判断模块101不向比较模块102发送使能信号。
和/或,在模式判断模块101中可以预先设置第二目标正则表达式,即为可以预先设置需要进行数据匹配的正则表达式信号。此时,模式判断模块101在获取到正则表达式信号后,可以将正则表达式信号与其内预先设置的第二目标正则表达式信号进行比较,若获取的正则表达式信号不是第二目标正则表达式信号,则说明不需要比较模块102进行正则表达式信号的数据比较,此时模式判断模块101不向比较模块102发送使能信号。若获取的正则表达式信号是第二目标正则表达式信号,则说明需要比较模块102进行正则表达式信号的数据比较,此时模式判断模块101向比较模块102发送使能信号。
需要说明的是,在模式判断模块102中既预先设置了第一目标正则表达式,又预先设置了第二目标正则表达式时,为了提高匹配速度,模式判断模块102可以将获取的正则表达式信号与其中的一者进行比较即可。
作为一种可能的实现方式,上述第一目标正则表达式信号为:任意数据且不限次数模式、任意数据且重复任意次、任意数据重复至多n次、任意数据重复至少n次、忽略n个数据不检查,一种或多种组合,其中,n为大于0的整数。
在一些实施例中,可以将正则表达式设置在存储设备中,此时,模式判断模块101可以从存储设备中获取正则表达式信号。或者,用户可以直接向模式判断模块101发送正则表达式信号,当然模式判断模块101还可以通过其他方式获取正则表达式信号,本申请对此不作限制。
在一种可能的实现方式中,模式判断模块101检测出需要向比价模块102发送使能信号时,即为模式判断模块101检测获取的正则表达式信号是第二目标正则表达式信号时,模式判断模块101在向比较模块102发送使能信号之前,还可以检测存储设备是否将第一数据准备就绪,缓存模块是否将第二数据准备就绪。即为,模式判断模块101需要判断存储设备是否读取出第一数据,缓存模块是否读取出第二数据。在一些实施例中,存储设备在读取出第一数据时,可以向模式判断模块101发送数据准备就绪的信号,同理,缓存模块在读取出第二数据时,可以向模式判断模块101发送数据准备就绪的信号。这样,模式判断模块101可以通过是否接收到存储设备发送的数据准备就绪的信号获知存储设备是否将第一数据准备就绪。通过是否接收到缓存模块发送的数据准备就绪的信号获知缓存模块是否将第二数据准备就绪。
在一些实施例中,为了提高匹配速度,存储设备可以将其读取的第一数据存储至预设的寄存器中,这样比较模块102可以从该预设的寄存器中读取第一数据,此时比较模块102、模式判断模块101及处理模块103均是与该寄存器电连接,参考图2所示。
需要说明的是,在本申请实施例中将存储设备中存储的数据统称为第一数据,将缓存模块存储的数据统称为第二数据。
比较模块102在接收到使能信号后,说明需要比较存储设备中的第一数据与缓存模块中的第二数据是否匹配。此时,比较模块102从存储设备中获取第一数据,从缓存模块中获取第二数据。比较模块102将第一数据与第二数据进行比较,确定第一数据与第二数据是否相匹配。在一些实施例中,比较模块102可以直接确定第一数据与第二数据是否相同。比较模块102将比较结果发送至处理模块103。在比较模块102比较出第一数据与第二数据相同时,则比较结果则表征第一数据与第二数据相同。在比较模块102比较出第一数据与第二数据不同时,则比较结果则表征第一数据与第二数据不同。
处理模块103的第一输入端与比较模块102的输出端电连接,此时,处理模块103可以接收比较模块102发送的比较结果。处理模块103获取正则表达式信号,处理模块103可以从模式判断模块101中获取正则表达式信号,或者,处理模块103可以直接从存储设备中获取正则表达式信号。处理模块103在获取了比较结果及正则表达式信号后,根据比较结果及正则表达式信号,确定出数据路径,即为处理模块103需要确定出存储设备的下一个要读取的第一数据的存储地址。此时,处理模块103可以根据比较结果及正则表达式信号来确定。
在比较结果表征第一数据与第二数据匹配时,处理模块103根据正则表达式信号来确定下一跳地址的方式,与较结果表征第一数据与第二数据不匹配时,处理模块103根据正则表达式信号来确定下一跳地址的方式不同。具体如下所述。
在比较结果表征第一数据与第二数据匹配时,处理模块103根据正则表达式信号来确定下一跳地址时,需要根据正则表达式信号中是否存在重复执行参数来确定下一跳地址。在一些实施例中,处理模块103,用于在比较结果表征第一数据与第二数据匹配,正则表达式信号中不存在重复执行参数时,则将第一数据对应的第一地址确定为下一跳转地址,向存储设备发送下一跳转地址。
其中,下一跳转地址是指存储设备重新获取第一数据时,需重新获取的第一数据的存储地址。
重复执行参数是正则表达式信号中用于表征执行次数的相关参数。在本申请实施例中,正则匹配电路其实是将缓存模块中获取的第二数据,与正则表达式信号中的数据进行匹配。而正则表达式信号中的数据是存储设备中的第一数据。因此,正则表达式信号中进行设置了重复执行参数时,是需要缓存模块中的数据重复多次与正则表达式信号中的数据进行匹配。此时,需要在每次进行匹配时,均需从缓存模块中重新获取第二数据。因此该重复执行参数可以是与读取缓存模块中第二数据的次数相关的参数,在一些实施例中,重复执行参数可以表征获取第二数据的执行次数。例如,正则表达式信号为A*,表示任意数据不限制次数。其中,*即为重复执行参数,此时需要不限制次数的读取缓存模块中第二数据。或者,正则表达式信号为An,表示任意数重复n次,其中n即为重复执行参数,需要从缓存数据中读取出n次任意数A。或者,正则表达式信号为An+,表示任意数据A至少重复n次,其中,n+即为重复执行参数,此时需要缓存数据中读取出至少n次第二数据。或者,正则表示信号为A-n,表示数据A至多重复n次,其中,-n即为重复执行参数,此时需要在缓存模块中至多读取出n个第二数据。当然,正则表达式信号还可以是其他信号,重复执行参数也可以是其他与执行次数相关的参数,本申请对此不做限制。
在本申请实施例中,处理模块103在接收到比较结果后,解析比较结果获知比较结果表征第一数据与第二数据相匹配,则说明从存储设备获取的第一数据正确,此时,处理模块103可以进一步检测正则表达式信号中是否存在重复执行参数。在一些实施例中,可以在处理模块103中预先设置多种可能的重复执行参数,此时处理模块103可以解析正则表达式信号来检测其内是否包含有重复执行参数。在处理模块103确定出正则表达式信号中不存在重复执行参数时,则可以确认正则表达式信号仅执行一次,此时在比较结果表征第一数据及第二数据匹配的情况下,则可以直接第一数据对应的正确地址作为下一跳地址。即为,将第一数据对应的第一地址确定为下一跳地址,并将该下一跳地址发送至存储设备中。在一些实施例中,处理模块103可以通过更改存储设备的指针数据来实现向存储设备发送下一跳地址的目的,参考图2所示。当然,处理模块103也可以直接将下一跳地址发送至存储设备,由存储设备自己更新指针数据,以便根据下一跳地址读取新的第一数据。
需要说明的是,存储设备存储的第一数据均预先设置了对应的第一地址及第二地址。其中,第一地址是指第一数据对应的正确地址。该正确地址是指第一数据与第二数据匹配时,下一个应获取的第一数据的存储地址。第二地址是指第一数据对应的错误地址。该错误地址是指第一数据与第二数据不匹配时,下一个应获取的第一数据的存储地址。
作为一种可能的实现方式,正则表达式信号中也可能存在重复执行参数。此时,处理模块103,用于在比较结果表征第一数据与第二数据匹配,正则表达式信号中存在重复执行参数,且获取第二数据的执行次数达到n次时,若n次获取的第一数据均与对应的第二数据相匹配,则将第n次获取的第一数据对应的第一地址确定为下一跳转地址,向存储设备发送下一跳转地址。或者,
若n次获取的第一数据中存在至少一个与对应的第二数据相不匹配,则将第n次获取的第一数据对应的第二地址确定为下一跳转地址,向存储设备发送下一跳转地址。
其中,n为正则表达式信号中重复执行参数的值,n为大于0的整数。第一数据对应的第二地址与第一数据对应的第一地址不同。
即为,处理模块103在确定出比较结果表征第一数据与第二数据匹配时,可以进一步解析正则表达式信号检测正则表达式信号是否存在重复执行参数。若检测出正则表达式信号存在重复执行参数时,处理模块103需要先确定获取第二数据的执行次数。在一些实施例中,在每次从缓存模块中获取第二数据时均可以更新获取第二数据的执行次数。若获取第二数据的执行次数达到n次,则说明已完成了正则表达式信号中设定的重复执行次数,此时处理模块103需要检测n次获取的第二数据是否均有相匹配的第一数据,若n次获取的第二数据均有相匹配的第一数据,则说明该正则表达式信号的执行过程是正确的,此时,可以将当前获取的与第n次第二数据相匹配的第一数据的第一地址确定为下一跳地址,并向存储设备发送下一跳地址,以便存储设备可以根据下一跳地址读取下一次的需要获取的第一数据。
或者,处理模块103在检测出获取第二数据的执行次数达到n次时,若检测n次获取的第二数据中存在至少一个未有相匹配的第一数据,即为n次获取的第二数据中存在至少一个与获取的第一数据不匹配,此时可以认为当前的正则表达式信号在执行的过程中存在错误,此时可以将当前获取的与第n次第二数据相匹配的第一数据的第二地址确定为下一跳地址,并向存储设备发送下一跳地址,以便存储设备可以根据下一跳地址读取下一次的需要获取的第一数据。
应理解的是,处理模块103在将下一跳地址发送至存储设备时,存储设备可以根据下一跳地址重新读取第一数据,即为读取存储地址为下一跳地址的数据作为第一数据,在比较模块102重新获取第一数据时,将读取的第一数据发送至比较模块102。这样在本申请实施例中,处理模块103可以通过确定存储设备的下一跳地址,来确定存储设备下一次读取的第一数据,以便控制读取数据的路径,灵活性较高,并且使用资源较少。
作为一种可能的实现方式,在正则表达式信号中存在重复执行参数时,获取第二数据的执行次数未达到n次时,处理模块103需要继续执行获取第二数据的相关步骤。此时,处理模块103,用于在比较结果表征第一数据与第二数据匹配,正则表达式信号中存在重复执行参数且获取第二数据的执行次数未达到n次时,则将起始地址确定为下一跳转地址,向存储设备发送下一跳转地址,向存储设备发送第一数据的获取触发信号,向缓存模块发送第二数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从存储设备中获取第一数据,从缓存模块中获取第二数据,直至获取第二数据的执行次数达到n次。
其中,n为正则表达式信号中重复执行参数的值,n为大于0的整数,起始地址是指正则表达式信号对应的首次获取的第一数据的存储地址。在一些实施例中,可以将起始地址存储至指定位置,例如存储至并集的开始指针中,参考图2所示。此时,处理模块103在需要将起始地址确定为下一跳转地址时,可以将并集的开始指针记录的地址数据确定为下一跳转地址。
即为,在处理模块103在确定出比较结果表征第一数据与第二数据匹配,且检测出正则表达式信号存在重复执行参数时,处理模块103需要确定获取第二数据的执行次数是否达到n次。即为,获取第二数据的执行次数是否达到正则表达式信号设定的次数。若未达到,则说明需要重复进行上述过程。即为需要重新获取第二数据,将第二数据与正则表达式信号中的数据进行比较。在本申请实施例中,正则表达式信号中的数据是存储设备中获取的第一数据。处理模块103并不存储。因此,每次需要正则表达式信号中的数据时需要从存储设备中重新获取。由于重复执行参数限定了重新获取缓存模块中的第二数据,并将第二数据与正则表达式信号中的数据进行比较。因此,在重复上述过程中,每次重新获取的第二数据均需要与正则表达式信号中的数据相比较,即为在重复上述过程中,每次与重新获取的第二数据进行比较的正则表达式信号中的数据是相同的。此时,而正则表达式信号中的数据可能存在多个,可以按照正则表达式将其内的数据与第二数据进行比较。此时,需要获取正则表达式信号中的第一个数据,该数据需要从存储设备中获取,处理模块103可以确定出该数据的存储地址,将其作为起始地址。处理模块103可以将针对该正则表达式信号第一次获取的第一数据的存储地址作为起始地址。将该起始地址作为下一跳转地址,并向存储设备发送下一跳转地址,以便存储设备可以在重新获取第一数据时,可以根据下一跳转地址获取到存储地址为下一跳转地址的第一数据。处理模块103还可以向存储设备发送第一数据的获取触发信号,向缓存模块发送第二数据的获取触发信号。这样,存储设备在接收到第一数据的获取触发信号后,可以根据下一跳转地址重新读取第一数据。在一些实施例中,存储设备可以将第一数据存储至寄存器中,以便比较模块102获取。同理,缓存模块在接收到第二数据的获取触发信号后,可以继续读取下一个第二数据。在一些实施例中,缓存模块可以是先进先出的缓存方式,此时缓存模块可以顺序的读取第二数据。处理模块103还需要触发模式判断模块101重新向比较模块102发送使能信号,以便触发比较模块102从存储设备中重新获取第一数据,从缓存模块中重新获取第二数据。处理模块103向模式判断模块101发送触发信号后,模式判断模块101可以重新确定存储设备中是否将第一数据准备就绪,缓存模块是否将第二数据准备就绪。在存储设备中将第一数据准备就绪,缓存模块将第二数据准备就绪时,向比较模块102发送使能信号。此时,比较模块102接收到使能信号后,可以重新在存储设备中获取第一数据,从缓存模块中获取第二数据,并将其进行比较,将比较结果发送至处理模块103。此时,处理模块103需要重新根据比较结果及正则表达式进行上述数据路径确定的过程。在获取第二数据的执行次数未达到n次时,需要重复执行上述过程,直至获取第二数据的执行次数达到n次。在处理模块103确定获取第二数据的执行次数达到n次时,其确定下一跳转地址的过程可参数上述过程,在此不再赘述。
作为一种可能的实现方式,比较模块102在比较第一数据及第二数据是否匹配时,还可能存在不匹配的情况,此时,处理模块103需要在比较结果表征所述第一数据与第二数据不匹配时,根据正则表达式信号确定出下一跳转地址。具体如下:
处理模块103,用于在比较结果表征第一数据与第二数据不匹配,正则表达式信号中不存在重复执行参数,且不存在第一数据对应的目标重复运算信息时,则将第一数据对应的第二地址确定为下一跳转地址,向存储设备发送下一跳转地址.
其中,目标重复运算信息是在正则表达式信号中与第一数据相邻且位于第一数据之后的重复运算信息。
或者,
处理模块103,用于在比较结果表征第一数据与第二数据不匹配,正则表达式信号中不存在重复执行参数,且存在第一数据对应的目标重复运算信息时,则根据预设更新方式更新下一跳转地址,向存储设备发送下一跳转地址,向存储设备发送第一数据的获取触发信号,并触发模式判断模块重新向比较模块发送使能信号,以便触发比较模块重新从存储设备中获取第一数据,直至在正则表达式信号中不存在第一数据对应的目标重复运算信息,或重新获取的第一数据与第二数据相匹配。
在本申请实施例中,重复运算符是指能够触发处理模块103重新获取第一数据的运算符号,在一些实施例中,该重复运算符可以是并集运算符号。在处理模块103接收到比较结果表征第一数据与第二数据不匹配时,需要检测正则表达式中是否存在目标重复运算信息。即为,在正则表达式中在第一数据之后是否存在与第一数据相邻的重复运算信息。若不存在,则无需获取其他第一数据与当前的第二数据进行比较,可以确定正则表达式信号中的第一数据均与第二数据不匹配。此时,处理模块103可以进一步检测正则表达式信号中是否存在重复执行参数。若不存在重复执行参数,此时,处理模块103完成该正则表达式信号的处理,由于第一数据与第二数据不匹配,则可以认为当前获取的第一数据不正确,因此可以将第一数据对应的第二地址确定为下一跳转地址,并向存储设备发送下一跳转地址。
或者,在比较结果表征所述第一数据与第二数据不匹配,正则表达式信号中不存在重复执行参数,且存在第一数据对应的目标重复运算信息时,此时可将第二数据与正则表达式信号中的其他第一数据进行比较,此时,处理模块103可以按照预设更新方式更新下一跳转地址,在一些实施例中,处理模块103可以将下一跳转地址加1作为新的下一跳转地址,将更新后的下一跳转地址发送至存储设备。处理模块103可以向存储设备发送第一数据的获取触发信号,存储设备接收到第一数据的获取触发信号后可以根据下一跳转地址读取第一数据。在一些实施例中,存储设备可以将读取的第一数据存储至寄存器中。处理模块103向模式判断模块101发送触发信号,以便触发模式判断模块101重新向比较模块102发送使能信号,以使得比较模块102在接收到使能信号时重新从存储设备中获取第一数据,并将第二数据与新获取的第一数据进行比较,将比较结果发送至处理模块103。在比较结果表征第一数据及第二数据不匹配时,若在正则表达式信号中还存在新获取的第一数据对应的目标重复运算信息,则处理模块103需要重新执行上述过程,直至正则表达式信号中不存在所述第一数据对应的目标重复运算信息,或重新获取的第一数据与第二数据相匹配。
在正则表达式信号中不存在第一数据对应的目标重复运算信息时,若新得出的比较结果表征第一数据与第二数据不匹配,则处理模块103可以将重新获取的第一数据的第二地址确定为下一跳转地址,并发送至存储设备。
在新得出的比较结果表征第一数据与第二数据匹配,则处理模块103可以将第一数据的第一地址确定为下一跳转地址,并发送至存储设备。
需要说明的是,预设更新方式还可以是其他方式以更新下一跳地址,例如,可以将当前下一跳地址加2,或者其他方式,本申请对此不作限制。
作为一种可能的实现方式,正则表达式信号中可能存在重复执行参数且不存在第一数据对应的目标重复运算信息的情况,此时处理模块103,用于在比较结果表征第一数据与第二数据不匹配,正则表达式信号中存在重复执行参数,且不存在第一数据对应的目标重复运算信息时,若获取第二数据的执行次数达到n次,则将第一数据的第二地址确定为下一跳转地址,向存储设备发送下一跳转地址。或者,
处理模块103,用于在比较结果表征第一数据与第二数据不匹配,正则表达式信号中存在重复执行参数,且不存在第一数据对应的目标重复运算信息时,若获取第二数据的执行次数未达到n次,则记录当前次获取的第二数据与对应的第一数据不匹配,且将起始地址确定为下一跳转地址,向存储设备发送下一跳转地址,向存储设备发送第一数据的获取触发信号,向缓存模块发送第二数据的获取触发信号,并触发模式判断模块重新向比较模块发送使能信号,以便触发比较模块重新从存储设备中获取第一数据,从缓存模块中获取第二数据,直至获取第二数据的执行次数达到n次或第二数据与对应的第一数据相匹配。
其中,n为正则表达式信号中重复执行参数的值,n为大于0的整数,起始地址是指正则表达式对应的首次获取的第一数据的存储地址。
即为,在比较结果表征第一数据与第二数据不匹配时,处理模块103还需解析该正则表达式信号,若解析出该正则表达式信号中不存在第一数据对应的目标重复运算信息,且存在重复执行次数,此时处理模块103需要确定获取第二数据的执行次数是否达到n次。即为,获取第二数据的执行次数是否达到正则表达式信号设定的次数。若获取第二数据的执行次数达到n次,则说明已完成了正则表达式信号中设定的重复执行次数,此时由于当前次获取的第二数据与第一数据不匹配,因此在获取第二数据的执行次数达到n次时,处理模块103可以直接将第一数据对应的第二地址确定为下一跳转地址,并发送至存储设备。
或者,若获取第二数据的执行次数未达到n次,则说明需要重复进行上述过程。即为需要重新获取第二数据,将第二数据与正则表达式信号中的数据进行比较。在本申请实施例中,正则表达式信号中的数据是存储设备中获取的第一数据。处理模块103并不存储。因此,每次需要正则表达式信号中的数据时需要从存储设备中重新获取。由于重复执行参数限定了重新获取缓存模块中的第二数据,并将第二数据与正则表达式信号中的数据进行比较。因此,在重复上述过程中,每次重新获取的第二数据均需要与正则表达式信号中的数据相比较,即为在重复上述过程中,每次与重新获取的第二数据进行比较的正则表达式信号中的数据是相同的。此时,而正则表达式信号中的数据可能存在多个,可以按照正则表达式将其内的数据与第二数据进行比较。此时,需要获取正则表达式信号中的第一个数据,该数据需要从存储设备中获取,处理模块103可以确定出该数据的存储地址,将其作为起始地址。处理模块103可以将针对该正则表达式信号第一次获取的第一数据的存储地址作为起始地址。将该起始地址作为下一跳转地址,并向存储设备发送下一跳转地址,以便存储设备可以在重新获取第一数据时,可以根据下一跳转地址获取到存储地址为下一跳转地址的第一数据。处理模块103还可以向存储设备发送第一数据的获取触发信号,向缓存模块发送第二数据的获取触发信号。这样,存储设备在接收到第一数据的获取触发信号后,可以根据下一跳转地址重新读取第一数据。在一些实施例中,存储设备可以将第一数据存储至寄存器中,以便比较模块102获取。同理,缓存模块在接收到第二数据的获取触发信号后,可以继续读取下一个第二数据。在一些实施例中,缓存模块可以是先进先出的缓存方式,此时缓存模块可以顺序的读取第二数据。处理模块103还需要触发模式判断模块101重新向比较模块102发送使能信号,以便触发比较模块102从存储设备中重新获取第一数据,从缓存模块中重新获取第二数据。处理模块103向模式判断模块101发送触发信号后,模式判断模块101可以重新确定存储设备中是否将第一数据准备就绪,缓存模块是否将第二数据准备就绪。在存储设备中将第一数据准备就绪,缓存模块将第二数据准备就绪时,向比较模块102发送使能信号。此时,比较模块102接收到使能信号后,可以重新在存储设备中获取第一数据,从缓存模块中获取第二数据,并将其进行比较,将比较结果发送至处理模块103。此时,处理模块103需要重新根据比较结果及正则表达式进行上述数据路径确定的过程。在获取第二数据的执行次数未达到n次时,需要重复执行上述过程,直至获取第二数据的执行次数达到n次或检测出第一数据与第二数据匹配。在处理模块103确定获取第二数据的执行次数达到n次或检测出第一数据与第二数据匹配时,其确定下一跳转地址的过程可参考上述过程,在此不再赘述。
作为一种可能的实现方式,正则表达式信号中可能存在重复执行参数及第一数据对应的目标重复运算信息,此时,处理模块103,用于在比较结果表征第一数据与第二数据不匹配,正则表达式信号中存在重复执行参数,且存在第一数据对应的目标重复运算信息时,记录当前次获取的第一数据与对应的第二数据不匹配,且根据预设更新方式更新下一跳转地址,向存储设备发送下一跳转地址,向存储设备发送第一数据的获取触发信号,并触发模式判断模块重新向比较模块发送使能信号,以便触发比较模块重新从存储设备中获取第一数据,直至在正则表达式信号中不存在第一数据对应的目标重复运算信息或重新获取的第一数据与第二数据相匹配。
在正则表达式信号中不存在第一数据对应的目标重复运算信息时,检测获取第二数据的执行次数是否达到n次。若获取第二数据的执行次数达到n次,则将第一数据的第二地址确定为下一跳转地址,向存储设备发送下一跳转地址;或者,若获取第二数据的执行次数未达到n次,则将起始地址确定为下一跳转地址,向存储设备发送下一跳转地址,向存储设备发送第一数据的获取触发信号,向缓存模块发送第二数据的获取触发信号,并触发模式判断模块重新向比较模块发送使能信号,以便触发比较模块重新从存储设备中获取第一数据,从缓存模块中获取第二数据,直至获取第二数据的执行次数达到n次或第二数据与对应的第一数据相匹配。
其中,n为正则表达式信号中重复执行参数的值,n为大于0的整数;起始地址是指正则表达式对应首次获取的第一数据的存储地址。
在本申请实施例中,处理模块103接收的比较结果表征第一数据与第二数据不匹配时,处理模块103通过解析正则表达式信号确定该正则表达式信号中存在重复执行参数及第一数据对应的目标重复运算信息。此时,处理模块103需要先记录当前次获取的第一数据与第二数据不匹配。由于正则表达式信号中存在第一数据对应的目标重复运算信息,因此需要进一步检测正则表达式信号中的其他第一数据是否与第二数据相匹配。此时,处理模块103可以按照预设更新方式更新下一跳转地址,在一些实施例中,处理模块103可以将下一跳转地址加1作为新的下一跳转地址,将更新后的下一跳转地址发送至存储设备。处理模块103可以向存储设备发送第一数据的获取触发信号,存储设备接收到第一数据的获取触发信号后可以根据下一跳转地址读取第一数据。在一些实施例中,存储设备可以将读取的第一数据存储至寄存器中。处理模块103向模式判断模块101发送触发信号,以便触发模式判断模块101重新向比较模块102发送使能信号,以使得比较模块102在接收到使能信号时重新从存储设备中获取第一数据,并将第二数据与新获取的第一数据进行比较,将比较结果发送至处理模块103。在比较结果表征第一数据及第二数据不匹配时,若在正则表达式信号中还存在新获取的第一数据对应的目标重复运算信息,则处理模块103需要重新执行上述过程,直至正则表达式信号中不存在第一数据对应的目标重复运算信息,或重新获取的第一数据与第二数据相匹配。
在正则表达式信号中不存在第一数据对应的目标重复运算信息时,说明当前第二数据已经将正则表达式信号中的对应的第一数据均进行了匹配,处理模块103可以读取新的第二数据进行正则表达式信号的处理。处理模块103需要先检测获取第二数据的执行次数是否达到n次。若达到n次,则说明已经完成了正则表达式信号设定的获取第二数据的次数,无需在针对该正则表达式信号重新获取第二数据,由于在该正则表达式信号的处理过程中,存在第二数据没有匹配到第一数据的情况下,此时处理模块103可以直接将最后获取的第一数据的第二地址作为下一跳转地址,并发送至存储设备。
或者,在获取第二数据的执行次数未达到n次,则说明需要重复进行上述过程。即为需要重新获取第二数据,将第二数据与正则表达式信号中的数据进行比较。在本申请实施例中,正则表达式信号中的数据是存储设备中获取的第一数据。处理模块103并不存储。因此,每次需要正则表达式信号中的数据时需要从存储设备中重新获取。由于重复执行参数限定了重新获取缓存模块中的第二数据,并将第二数据与正则表达式信号中的数据进行比较。因此,在重复上述过程中,每次重新获取的第二数据均需要与正则表达式信号中的数据相比较,即为在重复上述过程中,每次与重新获取的第二数据进行比较的正则表达式信号中的数据是相同的。此时,而正则表达式信号中的数据可能存在多个,可以按照正则表达式将其内的数据与第二数据进行比较。此时,需要获取正则表达式信号中的第一个数据,该数据需要从存储设备中获取,处理模块103可以确定出该数据的存储地址,将其作为起始地址。处理模块103可以将针对该正则表达式信号第一次获取的第一数据的存储地址作为起始地址。将该起始地址作为下一跳转地址,并向存储设备发送下一跳转地址,以便存储设备可以在重新获取第一数据时,可以根据下一跳转地址获取到存储地址为下一跳转地址的第一数据。处理模块103还可以向存储设备发送第一数据的获取触发信号,向缓存模块发送第二数据的获取触发信号。这样,存储设备在接收到第一数据的获取触发信号后,可以根据下一跳转地址重新读取第一数据。在一些实施例中,存储设备可以将第一数据存储至寄存器中,以便比较模块102获取。同理,缓存模块在接收到第二数据的获取触发信号后,可以继续读取下一个第二数据。在一些实施例中,缓存模块可以是先进先出的缓存方式,此时缓存模块可以顺序的读取第二数据。处理模块103还需要触发模式判断模块101重新向比较模块102发送使能信号,以便触发比较模块102从存储设备中重新获取第一数据,从缓存模块中重新获取第二数据。处理模块103向模式判断模块101发送触发信号后,模式判断模块101可以重新确定存储设备中是否将第一数据准备就绪,缓存模块是否将第二数据准备就绪。在存储设备中将第一数据准备就绪,缓存模块将第二数据准备就绪时,向比较模块102发送使能信号。此时,比较模块102接收到使能信号后,可以重新在存储设备中获取第一数据,从缓存模块中获取第二数据,并将其进行比较,将比较结果发送至处理模块103。此时,处理模块103需要重新根据比较结果及正则表达式进行上述数据路径确定的过程。在获取第二数据的执行次数未达到n次时,需要重复执行上述过程,直至获取第二数据的执行次数达到n次或检测出第一数据与第二数据匹配。在处理模块103确定获取第二数据的执行次数达到n次或检测出第一数据与第二数据匹配时,其确定下一跳转地址的过程可参考上述过程,在此不再赘述。
示例性的,在缓存模块中存储的第二数据依次是A,C及B时,若正则表达式信号为[AUBUC]3,此时,模式判断模块101接收到正则表达式信号,并检测出该正则表达式信号不是第一目标正则表达式信号时,向比较模块102发送使能信号。此时,比较模块102从存储设备中读取第一数据,从缓存模块读取第二数据。此时,比较模块102从缓存模块中读取的第二数据为A,假设比较模块102从存储设备中读取的第一数据也是A,则比较模块102比较出第一数据与第二数据相匹配。比较模块102将比较结果发送至处理模块103。处理模块103可以从模式判断模块101中获取正则表达式信号,并解析该正则表达式信号获知该正则表达式信号中存在重复执行参数。由于获取第二数据的重复执行次数为1,小于正则表达式信号中的3次,并且比较结果表征第一数据与第二数据匹配,因此处理模块103可以重新获取第二数据进行正则表达式信号的处理。此时,处理模块103将第一数据A的存储地址作为起始地址,将起始地址确定为下一跳转地址,将该下一跳转地址发送至存储设备。处理模块103向存储设备发送第一数据的获取触发信号,向缓存模块发送第二数据的获取触发信号,并触发模式判断模块101向比较模块102发送使能信号。此时,存储设备在接收到第一数据的获取触发信号后,可以根据下一跳转地址重新获取第一数据。同理,缓存模块在接收到第二数据的获取触发信号后,在本例中缓存模块为FIFO存储方式,因此缓存模块可以读取其内的第二个第二数据,即为读取出第二数据C。模式判断模块101接收到处理模块103的触发信号后,可以向比较模块102发送使能信号。此时,比较模块102在接收到使能信号后,可以从存储设备中获取第一数据,从缓存模块中获取第二数据。并将第一数据与第二数据进行比较,此时,由于第一数据为A,第二数据为C,比较模块102确定第一数据与第二数据不匹配。比较模块102将表征第一数据与第二数据不匹配的比较结果发送至处理模块103。处理模块103接收到比较结果后获知第一数据与第二数据不匹配,此时,处理模块103检测出正则表达式信号中存在并集运算符,即为正则表达式信号存在重复执行参数及重复运算信息。在第一数据与第二数据不匹配时,处理模块103检测出正则表达式信号中存在第一数据A对应的目标重复运算信息,即为存在在第一数据A之后且与第一数据A相邻的并集运算符,处理模块103可以继续获取存储设备中的下一个第一数据与第二数据进行匹配。处理模块103可以按照预设更新方式更新下一跳转地址,例如第一数据A的存储地址加1作为下一跳转地址,将下一跳转地址发送至存储设备。处理模块103向存储设备发送第一数据的获取触发信号,并触发模式判断模块101向比较模块102发送使能信号,以便比较模块102可以从存储设备重新获取第一数据。此时,比较模块102重新获取的第一数据为第一数据B,比较模块102将第一数据与第二数据进行比较,此时,由于第一数据为B,第二数据为C,比较模块102确定第一数据与第二数据不匹配。比较模块102将表征第一数据与第二数据不匹配的比较结果发送至处理模块103。处理模块103接收到比较结果后获知第一数据与第二数据不匹配,此时,处理模块103检测出正则表达式信号中存在第一数据B对应的目标重复运算信息,即为存在在第一数据B之后且与第一数据B相邻的并集运算符,处理模块103可以继续获取存储设备中的下一个第一数据与第二数据进行匹配。处理模块103可以按照预设更新方式更新下一跳转地址,例如第一数据B的存储地址加1作为下一跳转地址,将下一跳转地址发送至存储设备。处理模块103向存储设备发送第一数据的获取触发信号,并触发模式判断模块101向比较模块102发送使能信号,以便比较模块102可以从存储设备重新获取第一数据。此时,比较模块102重新获取的第一数据为第一数据C,比较模块102将第一数据与第二数据进行比较,此时,由于第一数据为C,第二数据为C,比较模块102确定第一数据与第二数据匹配。比较模块102将表征第一数据与第二数据匹配的比较结果发送至处理模块103。处理模块103接收到比较结果后获知第一数据与第二数据匹配。由于正则表达式信号中存在重复执行参数,因此,处理模块103需要确定获取第二数据的执行次数。此时,处理模块103确定获取第二数据的执行次数为2次,小于正则表达式信号中的3次,则处理模块103需要重新获取第二数据并与正则表达式信号中的第一数据进行匹配。此时,处理模块103可以将针对该正则表达式信号首次获取的第一数据A的存储地址作为起始地址,将起始地址确定为下一跳转地址,将该下一跳转地址发送至存储设备。处理模块103向存储设备发送第一数据的获取触发信号,向缓存模块发送第二数据的获取触发信号,并触发模式判断模块101向比较模块102发送使能信号。此时,存储设备在接收到第一数据的获取触发信号后,可以根据下一跳转地址重新获取第一数据。同理,缓存模块在接收到第二数据的获取触发信号后,在本例中缓存模块为FIFO存储方式,因此缓存模块可以读取其内的第二个第二数据,即为读取出第二数据B。模式判断模块101接收到处理模块103的触发信号后,可以向比较模块102发送使能信号。此时,比较模块102在接收到使能信号后,可以从存储设备中获取第一数据,从缓存模块中获取第二数据。并将第一数据与第二数据进行比较,此时,由于第一数据为A,第二数据为B,比较模块102确定第一数据与第二数据不匹配。比较模块102将表征第一数据与第二数据不匹配的比较结果发送至处理模块103。处理模块103接收到比较结果后获知第一数据与第二数据不匹配,此时,处理模块103检测出正则表达式信号中存在并集运算符,即为正则表达式信号存在重复运算信息。在第一数据与第二数据不匹配时,处理模块103检测出正则表达式信号中存在第一数据A对应的目标重复运算信息,即为存在在第一数据A之后且与第一数据A相邻的并集运算符,处理模块103可以继续获取存储设备中的下一个第一数据与第二数据进行匹配。处理模块103可以按照预设更新方式更新下一跳转地址,例如第一数据A的存储地址加1作为下一跳转地址,将下一跳转地址发送至存储设备。处理模块103向存储设备发送第一数据的获取触发信号,并触发模式判断模块101向比较模块102发送使能信号,以便比较模块102可以从存储设备重新获取第一数据。此时,比较模块102重新获取的第一数据为第一数据B,比较模块102将第一数据与第二数据进行比较,此时,由于第一数据为B,第二数据为B,比较模块102确定第一数据与第二数据匹配。比较模块102将表征第一数据与第二数据匹配的比较结果发送至处理模块103。处理模块103接收到比较结果后获知第一数据与第二数据匹配。由于正则表达式信号中存在重复执行参数,因此,处理模块103需要确定获取第二数据的执行次数。此时,处理模块103确定获取第二数据的执行次数为3次达到正则表达式信号中的3次,处理模块103确定3次获取的第二数据均有对应的第一数据,因此可以将最后一次获取的第二数据对应的第一数据的第一地址确定为下一跳转地址。即为,将第一数据B对应的第一地址确定为下一跳转地址,并发送至存储设备。
假设,缓存模块中存储的第二数据依次是A,C及D时,针对第二数据A,C及D的正则表达式信号处理,可以参考上述过程。处理模块103在确定出第二数据D与正则表达式信号中的三个第一数据均不匹配,并且获取第二数据的执行次数达到3次时,由于第三次获取的第二数据D没有相匹配的第一数据,因此,处理模块103可以将最后一次获取的第一数据对应的第二地址确定为下一跳转地址,即为将第一数据C对应的第二地址确定为下一跳转地址。
假设,缓存模块中存储的第二数据依次是A,C,B,A,C及D,且正则表达式信号为:[AUBUC]*D,其中*表示任意个。此时,处理模块103在获取到第二数据D后,与正则表达式信号中的[AUBUC]信号匹配完成后,虽然第二数据D与[AUBUC]信号中获取的第一数据并不匹配,此时,处理模块103将第一数据C的第一地址确定为下一跳转地址,发送至存储设备,并向存储设备发送第一数据的获取触发信号,触发模式判断模块101向比较模块102发送使能信号。此时,比较模块102接收到使能信号后,可以从存储设备重新获取第一数据,并将重新获取的第一数据与第二数据D进行比较。若重新获取的第一数据为D,则比较模块102确定第一数据与第二数据匹配,此时可以将表征第一数据与第二数据相匹配的比较结果发送至处理模块103。处理模块103接收到比较结果后,可以将第一数据D的第一地址确定为下一跳转地址。
若缓存中存储的第二数据依次是A,C,E,则在第二数据E与上述重新获取的第一数据D进行比较,确定出不匹配后,处理模块103可以将第一数据D的第二地址确定为下一跳转地址。
作为一种可能的实现方式,如图3所示,上述正则匹配电路还包括:第二计数模块104。其中,处理模块103的第五输入端与第二计数模块104的输出端电连接,处理模块103的第四输出端与第二计数模块104的控制端电连接。
处理模块103,用于在每次获取第二数据时触发第二计数模块104更新计数值,并根据第二计数模块104的计数值确定获取第二数据的执行次数。
即为,由于需要记录获取第二数据的执行次数,因此可以在正则匹配电路中设置有第二计数模块104,此时,处理模块103的第四输出端与第二计数模块104的控制端电连接,这样处理模块103可以在每次获取第二数据时,更新第二计数模块104的计数值。在一些实施例中,处理模块103可以在每次获取第二数据时,向第二计数模块104发送更新触发信号,第二计数模块104在接收到更新触发信号后,可以按照预设更新方式更新其内的计数值。在一些实施例中,第二计数模块104可以通过将其内的计数值加1的方式进行更新。处理模块103的第五输入端与第二计数模块104的输出端电连接,这样,处理模块103在需要获取第二计数模块104的计数值以确定获取第二数据的执行次数时,可以直接从第二计数模块104中获取。
或者,模式判断模块101在检测出获取的正则表达式信号是第一目标正则表达式信号时,此时模式判断模块101不向比较模块102发送使能信号。而是直接触发处理模块103进行相应的比较处理。此时,模式判断模块101,用于在正则表达式信号为第一目标正则表达式信号时,将检测标签设置为第一标签值,并将检测标签发送至处理模块103。
处理模块103,用于接收检测标签,获取正则表达式信号中对应的第一数据,并在缓存模块中获取第二数据,检测第二数据是否与第一数据匹配;若匹配,则将检测标签更新为第二标签值,并将第一数据对应的第一地址确定为下一跳转地址。
其中,模式判断模块101在判断出获取的正则表达式信号为第一目标正则表达式信号时,可以确定无需向比较模块102发送使能信号。模式判断模块101将检测标签设置为第一标签值,并将检测标签发送至处理模块103。此时,处理模块103在接收到检测标签后,获知需要其自己获取第一数据及第二数据。此时,处理模块103可以根据正则表达式信号确定正则表达式信号对应的第一数据。在一些实施例中,可以在处理模块103中预先设置第一目标正则表达式信号对应的第一数据。此时,处理模块103在确定出获取的正则表达式信号即为第一目标正则表达式信号时,可以直接获取其对应的第一数据。处理模块103需要从缓存模块中获取第二数据。处理模块103将获取的第二数据与第一数据进行比较,检测第二数据与第一数据是否匹配。若匹配,在可以直接将第一数据的第一地址确定为下一跳转地址,并将检测标签更新为第二标签值,以表示该正则表达式信号处理完毕。
作为一种可能的方式,处理模块103,用于在第二数据与第一数据不匹配时,重新执行在缓存模块中获取第二数据,检测第二数据是否与第一数据匹配,直至重新获取的第二数据与第一数据匹配;若重新获取的第二数据与第一数据匹配,则将检测标签更新为第二标签值,并将第一数据对应的第一地址确定为下一跳转地址。
即为,处理模块103在确定出第一数据与第二数据不匹配时,则说明未匹配到所需的第二数据,此时处理模块103可以重新从缓存模块中读取第二数据,并将从缓存模块中重新读取的第二数据与第一数据进行比较,若重新获取的额第二数据与第一数据仍然不匹配,则再次重新从缓存模块中获取第二数据,并将获取的第二数据与第一数据进行比较,若获取的第二数据与第一数据不匹配,则重新执行上述过程,直至第一数据与第二数据匹配。
在重新获取的第二数据与第一数据匹配时,则将第一数据的第一地址确定为下一跳转地址,并将检测标签更新为第二标签值。
其中,第一标签值与第二标签值不同。在一些实施例中,第一标签值可以为1,第二标签值可以为0,当然,还可以是其他的标签值,本申请对此不作限制。
作为一种可能的实现方式,需要在缓存模块中查找出与第一目标正则表达式信号中设定的数相同的第二数据,因此,第一目标正则表达式信号中可以不设定重复执行次数,此时处理模块103需要一直重复获取缓存模块中的第二数据,直至查找出与第一数据相匹配的第二数据。当然,也可以在第一目标正则表达式信号中设定重复执行次数,在一些实施例中可以设定重复执行最低次数,也可以设定重复执行的最大次数。若第一目标正则表达式信号设定了重复执行的最大次数,例如,第一目标正则表达式信号为任意数据重复至多n次时,处理模块103可以通过下述方式进行相应的正则匹配过程。此时,为了方便电路的实现,如图4所示,在正则匹配电路中还包括:第一计数模块105。
处理模块103的第四输入端与第一计数模块105的输出端电连接,处理模块103的第三输出端与第一计数模块105的控制端电连接。
处理模块103,用于在每次获取缓存模块的第二数据时更新第一计数模块的计数值;在第二数据与第一数据不匹配时,根据第一计数模块105确定获取缓存模块中第二数据的执行次数,若获取第二数据的执行次数达到正则表达式信号中设定的次数,则将检测标签更新为第二标签值,并将第一数据对应的第二地址确定为下一跳转地址,向存储设备发送下一跳转地址。或者,
若第二数据的执行次数未达到正则表达式信号中设定的次数,则重新执行步骤获取缓存模块中的第二数据,至步骤检测第二数据是否与第一数据匹配,直至第二数据与第一数据匹配或所述第二数据的执行次数达到正则表达式信号中设定的次数。
即为,在获取的正则表达式信号中设定了重复执行的次数时,处理模块103可以在每次从缓存模块中获取第二数据时,更新第一计数模块的计数值。在检测出第二数据与第一数据不匹配时,可以根据第一计数模块的计数值确定出获取第二数据的执行次数,在获取第二数据的执行次数达到正则表达式信号中设定的次数时,说明已经重复执行了正则表达式信号设定的次数,此时处理模块103可以直接将第一数据对应的第二地址确定为下一跳转地址,并将检测标签由第一标签值更新为第二标签值。
或者,在获取第二数据的执行次数未达到正则表达式信号中设定的次数时,处理模块103需要重新获取第二数据。此时,处理模块103可以重新在缓存模块中获取第二数据,在重新获取了第二数据后,可以更新第一计数模块105的计数值,并检测重新获取的第二数据是否与第一数据相匹配,若重新获取的第二数据与第一数据不匹配,则获取第一计数模块的计数值,并检测第一计数模块的计数值是否达到正则表达式信号中设定的次数,若未达到,则继续重新执行在缓存模块中获取第二数据,更新第一计数模块的计数值,并检测第二数据是否与第一数据匹配,直至重新获取的第二数据与第一数据相匹配或第一计数模块的计数值达到正则表达式信号中设定的次数。
此时,在重新获取的第二数据与第一数据匹配时,处理模块103将第一数据对应的第一地址确定为下一跳转地址。或者,在重新获取的第二数据与第一数据不匹配,且第一计数模块的计数值达到正则表达式信号中设定的次数时,处理模块103将第一数据对应的第二地址确定为下一跳转地址。
或者,若第一目标正则表达式信号中设定了重复执行的最低次数,此时处理模块103,在每次获取缓存模块的第二数据时更新第一计数模块105的计数值,若处理模块103获取的第二数据与从存储设备获取的第一数据匹配,处理模块103并不能直接将第一数据对应的第一地址确定为下一跳转地址,处理模块103需要检测第一计数模块的计数值是否达到正则表达式信号中设定的次数,若未达到,则继续重新执行在缓存模块中获取第二数据,更新第一计数模块的计数值,并重新检测第二数据是否与第一数据匹配,直至第一计数模块的计数值达到正则表达式信号中设定的次数。在第一计数模块的计数值达到正则表达式信号中设定的次数时,若n次获取的第二数据中存在至少m次与第一数据相匹配,则可以直接将第一数据的第一地址确定为下一跳转地址。若n次获取的第二数据中大于m次的第二数据与第一数据不匹配,则可以将第一数据的第二地址确定为下一跳转地址。其中,n为正则表达式信号中设定的次数,m为不大于n的整数。在一些实施例中,m与n的值相同。此时,若n次获取的第二数据均与第一数据相匹配,则可以直接将第一数据的第一地址确定为下一跳转地址。若n次次获取的第二数据中存在一次与第一数据不匹配,则可以将第一数据的第二地址确定为下一跳转地址。
在一种可能的实现方式中,处理模块103,用于在正则表达式信号包括忽略n个数据不检查的信号时,根据正则表达信号获取缓存模块中的第n+1个第二数据。其中,n为大于0的整数。
即为,在处理模块103获取的正则表达信号为设定了忽略n个数据不检查,处理模块103可以在正则表达信号中确定n的值,处理模块103可以直接从缓存模块中获取第n+1个第二数据,并将获取的第n+1个第二数据与第一数据进行比较,检测第n+1个第二数据与第一数据是否匹配。若匹配,则将第一数据对应的第一地址确定为下一跳转地址。若不匹配则重新获取缓存模块中的第二数据,此时重新获取的第二数据在缓存模块中存储位置位于上一次获取的第二数据之后且与上一次获取的第二数据相邻。并将重新获取的第二数据与第一数据进行比较,检测重新获取的第二数据与第一数据是否相匹配,若不匹配,则重新执行上述过程,直至重新获取的第二数据与第一数据匹配,此时处理模块103可以将第一数据对应的第一地址确定为下一跳转地址。
在本申请实施例中模式判断模块在获取到正则表达式信号时,可以根据正则表达式信号确定是否为比较模块发送使能信号;比较模块在接收到比较信号时可以在存储设备中获取第一数据并在缓存模块中接收第二数据,并比较第一数据及第二数据是否匹配,将比较结果发送至处理模块。处理模块可以根据比较结果、正则表达式信号确定数据路径。即为,在本申请实施例中可以通过模式判断模块、比较模块及处理模实现正则表达式的匹配,确定出数据路径使用的资源较少,并且灵活性较高,匹配速度较快,提高了电路的匹配效率。
在一些实施例中,上述缓存模块可以包括存储方式为FIFO的缓存单元,也可以包括数据捕获单元。参见图5,为本申请实施例提供的另一种正则匹配电路的结构示意图。图5所示的正则匹配电路与上述图4所述的正则匹配电路相比,缓存模块包括存储方式为FIFO的缓存器件及数据捕获单元。在图5所示的正则匹配电路中,模式判断模块101,比较模块102,处理模块103,第一计数模块105,第二计数模块104间的连接关系可参考上述实施例所述,在此不再赘述。
此时,模式判断模块101,比较模块102,处理模块103与缓存模块连接,即为模式判断模块101,比较模块102,处理模块103分别与数据捕获单元及缓存单元连接。
在本申请实施例中,可以将缓存单元中存储的数据与存储设备存储的第一数据进行正则表达式信号的匹配,也可以数据捕获单元捕获的数据与存储设备存储的第一数据进行正则表达式信号的匹配。此时,可以由处理模块103确定从缓存模块的哪个单元中获取与存储设备存储的第一数据进行正则表达式信号匹配的数据。在一些实施例中,处理模块103中可以预先设置默认匹配的单元,例如,可以将缓存模块中的缓存单元设置为默认匹配模块,这样在需要与存储设备存储的第一数据进行正则表达式信号匹配时,可以直接确定是将缓存单元中存储的数据作为第二数据,与存储设备存储的第一数据进行正则表达式信号匹配。此时,处理模块103可以向比较模块102发送相关信号以便告知比较模块102从缓存模块中的缓存单元获取数据作为第二数据,与存储设备存储的第一数据进行正则表达式信号匹配。或者,在一些实施例中,可以由用户设定。此时,处理模块103可以根据用户的设定来确定将缓存模块中的哪个单元内存储的数据作为第二数据,与存储设备存储的第一数据进行正则表达式信号匹配。
其中,将缓存单元中的数据或将数据捕获单元捕获的数据作为第二数据,与存储设备存储的第一数据进行正则表达式信号匹配的过程可以参考上述实施例所述的过程,在此不再赘述。
需要说明的是,缓存模块还可以包括其他能够实现临时存储功能的单元,本申请对此不作限制。
在一些实施例中,上述第一计数模块105及第二计数模块104可以是同一个计数模块,此时正则匹配电路中可以将第一计数模块105及第二计数模块104统称为计数模块,如图6所示。
即为在本申请实施例中正则表达式信号可以是任意数据且不限次数模式、任意数据且重复任意次、任意数据重复至多n次、任意数据重复至少n次、忽略n个数据不检查,一种或多种组合,或者可以是第一数据或第二数据模式、第一数据或第二数据且不限次数模式、第一数据或第二数据且重复任意次、第一数据或第二数据且重复至多n次、第一数据或第二数据且重复最少n次中的一种或多种组合,其中,第一数据与第二数据不同。或者正则表达式信号还可以是上述模式间的任意组合形成的新模式。这样一来,本申请实施例中的正则匹配电路可以实现多种正则表达式信号的匹配,并且在匹配成功时,可以确定匹配成功时的数据路径,在匹配失败时,可以确定匹配失败时的数据路径,大大提高了正则匹配电路的灵活性,减少了部分正则表达式对应下的比较过程从而降低了使用的资源,提高了匹配速度,进而提高了匹配效率。
进一步地,在本申请实施例中不仅可以将缓存单元中的数据与存储器件中的数据进行正则匹配,还可以将数据捕获单元捕获的数据与存储器件中的数据进行正则匹配,提高了正则匹配电路的灵活性,进而提高了匹配效率。
图7为本申请实施例提供的一种正则匹配方法的流程示意图。如图7所示,该方法应用于上述实施例所述的正则匹配电路。所述方法包括:
步骤S701、模式判断模块获取正则表达式信号,并根据正则表达式信号确定是否为比较模块发送使能信号。
步骤S702、比较模块在接收到使能信号时,从存储设备中获取第一数据并从缓存模块中获取第二数据,对第一数据与第二数据进行比较,将比较结果发送至处理模块。
其中,比较结果用于表征所述第一数据及第二数据是否匹配;
步骤S703、处理模块接收比较结果并获取正则表达式信号,根据正则表达式信号及比较结果,确定数据路径。
其中,本申请实施例中每个步骤的具体实现可以参考上述实施例中相应模块的功能实现,在此不再赘述。
与上述实施例相对应,本申请还提供了一种FPGA芯片,包括上述实施例所述的正则匹配电路。
与上述实施例相对应,本申请还提供了一种电子设备。所述电子设备包括上述实施例所述的正则匹配电路或芯片,更具体的所述的芯片为FPGA(Field Programmable GateArray,现场可编程门阵列)芯片。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间匹配相似的部分互相参见即可。尤其,对于装置实施例和终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
Claims (16)
1.一种正则匹配电路,其特征在于,包括:模式判断模块,比较模块,处理模块;其中,
所述模式判断模块的输入端用于连接存储设备,所述模式判断模块的输出端与所述比较模块的使能端电连接;所述模式判断模块,用于获取正则表达式信号,并根据所述正则表达式信号确定是否为所述比较模块发送使能信号;
所述比较模块的第一输入端用于连接所述存储设备,所述比较模块的第二输入端用于连接缓存模块,所述比较模块的输出端与所述处理模块的第一输入端电连接;所述比较模块,用于在接收到使能信号时,从所述存储设备中获取第一数据并从缓存模块中获取第二数据,对所述第一数据与第二数据进行比较并将比较结果发送至处理模块;所述比较结果用于表征所述第一数据及第二数据是否匹配;
所述处理模块的第二输入端用于连接所述存储设备,所述处理模块的第三输入端用于连接缓存模块,所述处理模块的第一输出端与所述模式判断模块电连接,所述处理模块的第二输出端用于连接所述存储设备;所述处理模块,用于接收所述比较结果并获取正则表达式信号,根据所述正则表达式信号及所述比较结果,确定数据路径。
2.根据权利要求1所述的电路,其特征在于,
所述模式判断模块,用于若所述正则表达式信号是第一目标正则表达式信号,则不向所述比较模块发送使能信号,或者,若所述正则表达式信号是第二目标正则表达式信号,则向所述比较模块发送使能信号。
3.根据权利要求2所述的电路,其特征在于,所述第一目标正则表达式信号为:任意数据且不限次数模式、任意数据且重复任意次、任意数据重复至多n次、任意数据重复至少n次、忽略n个数据不检查,一种或多种组合,其中,n为大于0的整数。
4.根据权利要求2所述的电路,其特征在于,
所述模式判断模块,用于在所述正则表达式信号为第一目标正则表达式信号时,将检测标签设置为第一标签值,并将所述检测标签发送至所述处理模块;
所述处理模块,用于接收所述检测标签,获取所述正则表达式信号中对应的第一数据,并在所述缓存模块中获取第二数据,检测所述第二数据是否与所述第一数据匹配;
若匹配,则将所述检测标签更新为第二标签值,并将所述第一数据对应的第一地址确定为下一跳转地址。
5.根据权利要求4所述的电路,其特征在于,
所述处理模块,用于在所述第二数据与所述第一数据不匹配时,则重新在所述缓存模块中获取第二数据,检测所述第二数据是否与所述第一数据匹配,直至重新获取的所述第二数据与所述第一数据匹配;
若重新获取的所述第二数据与所述第一数据匹配,则将所述检测标签更新为第二标签值,并将所述第一数据对应的第一地址确定为下一跳转地址。
6.根据权利要求5所述的电路,其特征在于,还包括第一计数模块;
所述处理模块的第四输入端与所述第一计数模块的输出端电连接,所述处理模块的第三输出端与第一计数模块的控制端电连接;
所述处理模块,用于在每次获取所述缓存模块的第二数据时更新所述第一计数模块的计数值;在所述第二数据与所述第一数据不匹配时,根据所述第一计数模块确定获取缓存模块中第二数据的执行次数,若获取所述第二数据的执行次数达到所述正则表达式信号中设定的次数,则将所述检测标签更新为第二标签值,并将所述第一数据对应的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;或者,
若所述第二数据的执行次数未达到所述正则表达式信号中设定的次数,则重新在所述缓存模块中获取第二数据,更新第一计数模块的计数值,并检测所述第二数据是否与所述第一数据匹配,直至所述第二数据与所述第一数据匹配或所述第二数据的执行次数达到所述正则表达式信号中设定的次数。
7.根据权利要求4所述的电路,其特征在于,
所述处理模块,用于在所述正则表达式信号包括忽略n个数据不检查的信号时,根据所述正则表达信号获取所述缓存模块中的第n+1个第二数据;其中,n为大于0的整数。
8.根据权利要求1所述的电路,其特征在于,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据匹配,所述正则表达式信号中不存在重复执行参数时,则将所述第一数据对应的第一地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;其中所述下一跳转地址是指所述存储设备重新获取第一数据时,需重新获取的第一数据的存储地址。
9.根据权利要求1所述的电路,其特征在于,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据匹配,所述正则表达式信号中存在重复执行参数,且获取第二数据的执行次数达到n次时,若n次获取的所述第二数据均有相匹配的第一数据,则将所述第一数据对应的第一地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址,其中,所述n为正则表达式信号中重复执行参数的值,n为大于0的整数;或者,
若n次获取的所述第二数据中存在至少一个未有匹配的第一数据,则将所述第一数据对应的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;所述第一数据对应的第二地址与所述第一数据对应的第一地址不同。
10.根据权利要求1所述的电路,其特征在于,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据匹配,所述正则表达式信号中存在重复执行参数且获取所述第二数据的执行次数未达到n次时,则将起始地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,向所述缓存模块发送第二数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,从所述缓存模块中获取第二数据,直至获取所述第二数据的执行次数达到n次,其中,所述n为正则表达式信号中重复执行参数的值,n为大于0的整数,起始地址是指所述正则表达式信号对应的首次获取的第一数据的存储地址。
11.根据权利要求1所述的电路,其特征在于,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中不存在重复执行参数,且不存在所述第一数据对应的目标重复运算信息时,则将所述第一数据对应的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;其中,所述目标重复运算信息是在所述正则表达式信号中与所述第一数据相邻且位于所述第一数据之后的重复运算信息;或者,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中不存在重复执行参数,且存在所述第一数据对应的目标重复运算信息时,则根据预设更新方式更新所述下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,直至在所述正则表达式信号中不存在所述第一数据对应的目标重复运算信息,或重新获取的第一数据与所述第二数据相匹配。
12.根据权利要求1所述的电路,其特征在于,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中存在重复执行参数,且不存在所述第一数据对应的目标重复运算信息时,若获取第二数据的执行次数达到n次,则将所述第一数据的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;或者,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中存在重复执行参数,且不存在所述第一数据对应的目标重复运算信息时,若获取第二数据的执行次数未达到n次,则记录当前次获取的第二数据与对应的第一数据不匹配,且将起始地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,向所述缓存模块发送第二数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,从所述缓存模块中获取第二数据,直至获取所述第二数据的执行次数达到n次或所述第二数据与对应的第一数据相匹配,其中,所述n为正则表达式信号中重复执行参数的值,n为大于0的整数,起始地址是指所述正则表达式对应的首次获取的第一数据的存储地址。
13.根据权利要求1所述的电路,其特征在于,
所述处理模块,用于在所述比较结果表征所述第一数据与第二数据不匹配,所述正则表达式信号中存在重复执行参数,且存在所述第一数据对应的目标重复运算信息时,记录当前次获取的第一数据与所述第二数据不匹配,且根据预设更新方式更新下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,直至在所述正则表达式信号中不存在所述第一数据对应的目标重复运算信息或重新获取的第一数据与所述第二数据相匹配;
在所述正则表达式信号中不存在所述第一数据对应的目标重复运算信息时,检测获取第二数据的执行次数是否达到n次;其中,所述n为正则表达式信号中重复执行参数的值,n为大于0的整数;
若获取第二数据的执行次数达到n次,则将所述第一数据的第二地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址;或者,
若获取第二数据的执行次数未达到n次,则将起始地址确定为下一跳转地址,向所述存储设备发送所述下一跳转地址,向所述存储设备发送第一数据的获取触发信号,向所述缓存模块发送第二数据的获取触发信号,并触发模式判断模块重新向所述比较模块发送使能信号,以便触发所述比较模块重新从所述存储设备中获取第一数据,从所述缓存模块中获取第二数据,直至获取所述第二数据的执行次数达到n次或所述第二数据与对应的第一数据相匹配,其中,起始地址是指所述正则表达式对应首次获取的第一数据的存储地址。
14.根据权利要求9或10或12或13所述的电路,其特征在于,还包括:第二计数模块;
所述处理模块的第五输入端与所述第二计数模块的输出端电连接,所述处理模块的第四输出端与第二计数模块的控制端电连接;
所述处理模块,用于在每次获取第二数据时更新所述第二计数模块的计数值,并根据所述第二计数模块的计数值确定获取第二数据的执行次数。
15.一种正则匹配方法,其特征在于,应用于权利要求1-14任一项所述的正则匹配电路,所述方法包括:
模式判断模块获取正则表达式信号,并根据所述正则表达式信号确定是否为比较模块发送使能信号;
比较模块在接收到使能信号时,从所述存储设备中获取第一数据并从缓存模块中获取第二数据,对所述第一数据与第二数据进行比较,将比较结果发送至处理模块;所述比较结果用于表征所述第一数据及第二数据是否匹配;
处理模块接收所述比较结果并获取正则表达式信号,根据所述正则表达式信号及所述比较结果,确定数据路径。
16.一种FPGA芯片,其特征在于,包括权利要求1-14任一项所述的正则匹配电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311332982.XA CN117312498A (zh) | 2023-10-13 | 2023-10-13 | 一种正则匹配电路、匹配方法、fpga芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311332982.XA CN117312498A (zh) | 2023-10-13 | 2023-10-13 | 一种正则匹配电路、匹配方法、fpga芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117312498A true CN117312498A (zh) | 2023-12-29 |
Family
ID=89296976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311332982.XA Pending CN117312498A (zh) | 2023-10-13 | 2023-10-13 | 一种正则匹配电路、匹配方法、fpga芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117312498A (zh) |
-
2023
- 2023-10-13 CN CN202311332982.XA patent/CN117312498A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107608750B (zh) | 用于型式辨识的装置 | |
CN111506599B (zh) | 基于规则匹配和深度学习的工控设备识别方法及系统 | |
US20080005265A1 (en) | Method for automatic parsing of variable data fields from textual report data | |
US20130191916A1 (en) | Device and method for data matching and device and method for network intrusion detection | |
CN111552633A (zh) | 接口的异常调用测试方法、装置、计算机设备及存储介质 | |
CN113626812A (zh) | 基于结构特征筛选及负载扩展的机器学习木马检测方法 | |
US9690873B2 (en) | System and method for bit-map based keyword spotting in communication traffic | |
CN111290305B (zh) | 多套惯导系统多路数字量采集与处理防冲突方法及系统 | |
CN112183052B (zh) | 一种文档重复度检测方法、装置、设备和介质 | |
CN117312498A (zh) | 一种正则匹配电路、匹配方法、fpga芯片 | |
CN110928793B (zh) | 一种正则表达式检测方法、装置及计算机可读存储介质 | |
CN115378747B (zh) | 恶意数据检测方法、终端设备以及存储介质 | |
CN112446341A (zh) | 告警事件识别方法、系统、电子设备及存储介质 | |
CN110703740A (zh) | 一种汽车诊断数据处理方法、装置及计算机存储介质 | |
CN111159490A (zh) | 一种模式字符串的处理方法、装置及设备 | |
CN116610262A (zh) | 降低ssd顺序读延时的方法、装置、设备及介质 | |
US20160253374A1 (en) | Data file writing method and system, and data file reading method and system | |
CN112187935B (zh) | 信息识别方法与只读内存 | |
CN114943083A (zh) | 一种智能终端漏洞代码样本挖掘方法、装置及电子设备 | |
CN111930612A (zh) | 一种代码更新正确性的检测方法、装置及计算设备 | |
US20060256726A1 (en) | Systems and methods for viewing data in a trace buffer | |
CN113065419A (zh) | 一种基于流量高频内容的模式匹配算法及系统 | |
CN107102921B (zh) | 一种面向带I/O型数字量异步端口SoC的数字量监测方法 | |
CN105653950A (zh) | 一种基于多模式的恶意代码匹配方法及装置 | |
CN117271202B (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 |