一种正则查询的方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别涉及一种正则查询的方法和装置。
【背景技术】
[0002]随着计算机技术和网络技术的飞速发展,条件查询技术得到了非常广泛的应用,正则查询是基于正则表达式进行的条件查询,是一种常用的条件查询处理方法,正则表达式是一种规范的查询条件的描述信息,例如,正则表达式“/a*b/”表示查询以a开头以b结尾的字符串。
[0003]在进行正则查询时,技术人员可以根据查询的需求选择或编写正则表达式,然后对目标数据(也可称作母串或目标串)执行正则查询,在目标数据中查询符合正则表达式的数据,作为结果数据进行输出。在实际应用中,当有多个正则查询需要执行时,一般采用的处理方式是,基于各正则表达式,按顺序逐个执行每个正则查询。
[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005]正则查询一般比较复杂,查询时间很长,当需要执行的正则查询比较多时,逐个执行所有正则查询会导致处理时间过长,查询效率较为低下。
【发明内容】
[0006]为了解决现有技术的问题,本发明实施例提供了一种正则查询的方法和装置,以提高查询效率。所述技术方案如下:
[0007]—方面,提供了一种正则查询的方法,所述方法包括:
[0008]获取用于正则查询的目标数据和多个正则表达式,并获取预先设置的各正则表达式对应的特征数据;
[0009]在所述各正则表达式对应的特征数据中,选取所述目标数据中包含的特征数据;
[0010]根据选取的特征数据对应的正则表达式,在所述目标数据中,进行正则查询。
[0011]另一方面,提供了一种正则查询的装置,所述装置包括:
[0012]获取模块,用于获取用于正则查询的目标数据和多个正则表达式,并获取预先设置的各正则表达式对应的特征数据;
[0013]选取模块,用于在所述各正则表达式对应的特征数据中,选取所述目标数据中包含的特征数据;
[0014]查询模块,用于根据选取的特征数据对应的正则表达式,在所述目标数据中,进行正则查询。
[0015]本发明实施例提供的技术方案带来的有益效果是:
[0016]本发明实施例中,获取用于正则查询的目标数据和多个正则表达式,并获取预先设置的各正则表达式对应的特征数据,在各正则表达式对应的特征数据中,选取目标数据中包含的特征数据,根据选取的特征数据对应的正则表达式,在目标数据中,进行正则查询,这样,可以排除掉与目标数据不相关的特征数据对应的正则表达式,只基于与目标数据相关的特征数据对应的正则表达式进行正则查询,可以减少需要逐个执行的正则查询的数目,从而,可以提高总的查询效率。
【附图说明】
[0017]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018]图1是本发明实施例提供的正则查询的方法流程图;
[0019]图2是本发明实施例提供的字典树的结构示意图;
[0020]图3是本发明实施例提供的正则查询的方法流程图;
[0021]图4是本发明实施例提供的建立字典树过程的示意图;
[0022]图5是本发明实施例提供的正则查询的装置结构示意图;
[0023]图6是本发明实施例提供的电子设备的结构示意图。
【具体实施方式】
[0024]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0025]实施例一
[0026]本发明实施例提供了一种正则查询的方法,如图1所示,该方法的处理流程可以包括如下步骤:
[0027]步骤101,获取用于正则查询的目标数据和多个正则表达式,并获取预先设置的各正则表达式对应的特征数据。
[0028]步骤102,在各正则表达式对应的特征数据中,选取目标数据中包含的特征数据。
[0029]步骤103,根据选取的特征数据对应的正则表达式,在目标数据中,进行正则查询。
[0030]本发明实施例中,获取用于正则查询的目标数据和多个正则表达式,并获取预先设置的各正则表达式对应的特征数据,在各正则表达式对应的特征数据中,选取目标数据中包含的特征数据,根据选取的特征数据对应的正则表达式,在目标数据中,进行正则查询,这样,可以排除掉与目标数据不相关的特征数据对应的正则表达式,只基于与目标数据相关的特征数据对应的正则表达式进行正则查询,可以减少需要逐个执行的正则查询的数目,从而,可以提高总的查询效率。
[0031]实施例二
[0032]本发明实施例提供了一种正则查询的方法,该方法的执行主体可以为具有一定数据处理能力的电子设备,如服务器、终端设备等。
[0033]下面将结合具体的处理方式,对图1所示的流程进行详细的说明,内容可以如下:
[0034]步骤101,获取用于正则查询的目标数据和多个正则表达式,并获取预先设置的各正则表达式对应的特征数据。
[0035]其中,目标数据是正则查询中作为查询基础的数据,例如,在某段文字中查询符合某正则表达式的字符,那么该段文字即为目标数据。特征数据可以用于反映目标数据中是否包含符合相应的正则表达式的数据,可以是一个字符串,所以特征数据又可称作特征串。特征数据可以由技术人员根据对应的正则表达式预先设置,特征数据的特点可以是:如果目标数据中不包含该特征数据,则说明目标数据中不包含符合该特征数据对应的正则表达式的数据。例如,某正则表达式是为了查询报文中是否包含有某个指令A,而指令A是一种只能出现在报文的某个特定字段中的指令,那么,可以设置该正则表达式对应的特征数据为该特定字段的字段名,这样,如果目标数据中不包含该特征数据(即该字段名),则可以认为目标数据中不可能包含符合该正则表达式的数据。
[0036]在实施中,电子设备中可以安装有具有正则查询功能的应用,该应用中可以设置有查询页面,查询页面中可以设置有表达式输入窗口,技术人员可以在其中输入一个或多个正则表达式,也可以在预先存储的正则表达式列表中选择一个或多个正则表达式。对应表达式输入窗口中的每个正则表达式,还可以设置有特征数据输入窗口,在应用中可以预先设置并存储多个正则表达式对应的特征数据,在表达式输入窗口中的每个正则表达式中,对于存储有特征数据的正则表达式,可以直接在对应的特征数据输入窗口中显示该正则表达式对应的特征数据,对于未存储特征数据的正则表达式,技术人员可以在相应的特征数据输入窗口中输入特征数据,以完成为该正则表达式设置特征数据。经过上述设置之后,在对目标数据进行正则查询时,则可以获取用户输入或选择的各正则表达式,并获取对应的特征数据,供后续处理中使用。
[0037]另外,除了上述方式,也可以不通过应用完成相应的处理,技术人员可以根据实际需求编写用于正则查询的程序,在程序中写入多个正则表达式,并写入每个正则表达式对应的特征数据。当执行该程序对目标数据进行正则查询时,则获取程序中记录的多个正则表达式以及每个正则表达式对应的特征数据。
[0038]步骤102,在各正则表达式对应的特征数据中,选取目标数据中包含的特征数据。
[0039]在实施中,可以查询目标数据中是否包含各正则表达式对应的特征数据,查询的方式可以多种多样,例如,可以分别使用每个特征数据在目标数据中进行匹配查询,以分别确认各特征数据是否包含于目标数据中。另外,还可以采用多模匹配算法进行查询,相应的步骤102的处理可以如下:
[0040]根据多模匹配算法,在各正则表达式对应的特征数据中,选取所述目标数据中包含的特征数据。
[0041]其中,多模匹配算法是在目标数据中同时进行多个数据(关键词)的匹配查询的算法,如AC(发明者名称的缩写)多模匹配算法、Wu-Manber (发明者名称)多模匹配算法。
[0042]可选的,基于AC多模匹配算法,选取目标数据中包含的特征数据的处理过程可以包括如下步骤:
[0043]步骤一,根据各正则表达式对应的特征数据,构建字典树。
[0044]其中,字典树是一种可以用于字符串等数据的匹配查询的树形结构,如图2所示,在字典树中除根节点外每个节点都可以存储一个字符。
[0045]在实施中,以各正则表达式对