一种基于正则表达式的匹配方法及装置与流程

文档序号:12597930阅读:222来源:国知局
一种基于正则表达式的匹配方法及装置与流程

本发明涉及计算机领域,尤其涉及一种基于正则表达式的匹配方法及装置。



背景技术:

一些业务处理过程中,例如,语音通话业务、短信业务等,需要对文本语句进行精确的过滤时,可以使用正则表达式与文本语句进行匹配。在现有技术中,在对于复杂的文本语句进行匹配之前,需要编写一条与该复杂的文本语句完全匹配的正则表达式,或者编写多条正则表达式与该复杂的文本语句进行多次匹配,难度和复杂度很高。

因此,当对复杂的文本语句进行过滤时,采用现有技术的方法编写正则表达式生成难度大,匹配灵活度低。



技术实现要素:

本发明的目的是提供一种基于正则表达式的匹配方法及装置,以解决当需要过滤很复杂的语句时,需要编写多个复杂的正则表达式进行匹配,正则表达式生成难度大,匹配灵活度低的问题。

本发明的目的是通过以下技术方案实现的:

一种基于正则表达式的匹配方法,该方法包括:

根据待匹配语句所属的业务类型,确定与所述业务类型对应的正则表达式集合;

将所述待匹配语句与所述正则表达式集合中的正则表达式进行匹配,得到匹配后的语句;

其中,所述正则表达式集合中的正则表达式是按照如下步骤生成的:

确定所述正则表达式集合所属的业务类型对应的数据库;

将所述数据库中的字,按照词性进行分类,得到至少一种类型的字;

对于每种类型的字,根据语法结构,将该类型中的任意两个或两个以上的字组成词;

将所述数据库中的词和所组成的词,按照词性进行分类,得到至少一种类型的词;

将至少一种类型的字、至少一种类型的词,和/或至少一个用于匹配任意字符的特定符号分别作为正则表达式的匹配项,并根据语法结构,将所述匹配项进行排序,形成至少一个正则表达式。

可选的,将所述待匹配语句与所述正则表达式集合中的正则表达式进行匹配,得到匹配后的语句,包括:

将所述待匹配语句与所述正则表达式集合中的正则表达式中的每个匹配项进行匹配;

若所述待匹配语句与任一正则表达式的每个匹配项均匹配成功,且所述任一正则表达式的每个匹配项在所述待匹配语句中的排列顺序与在所述任一正则表达式中的排列顺序一致,根据所述任一正则表达式,确定匹配后的语句,其中,所述匹配后的语句包括所述待匹配语句中与所述任一表达式中的匹配项匹配的字符。

可选的,所述根据所述任一正则表达式,确定匹配后的语句,包括:

确定所述任一正则表达式中的特定符号在所述任一正则表达式中的位置;

根据所述特定符号的编号,确定所述任一正则表达式中所述特定符号相邻的匹配项的位置;

根据所述特定符号相邻的匹配项的编号,确定所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置;

根据所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置,确定所述待匹配语句中与所述特定符号匹配的字符。

可选的,根据所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置,确定所述待匹配语句中与所述特定符号匹配的字符,包括:

若所述特定符号位于所述任一正则表达式中第一个位置,将所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符之前的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符;或者

若所述特定符号位于所述任一正则表达式中最后一个位置,将所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符之后的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符;或者

若所述特定符号位于所述任一正则表达式中除第一个位置与最后一个位置外的其他位置,将所述待匹配语句中与所述特定符号相邻的两个匹配项匹配的字符之间的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符。

可选的,若所述任一正则表达式中的至少一个匹配项配置有过滤规则,该方法还包括:

确定所述任一正则表达式中具有过滤规则的匹配项的位置,所述过滤规则表示对待匹配语句中与所述过滤规则对应的匹配项匹配的字符执行的操作;

根据具有过滤规则的匹配项的位置,确定出所述匹配后的语句中与具有过滤规则的匹配项对应的字符;

根据所述过滤规则,对所述匹配后的语句中与具有过滤规则的匹配项对应的字符,进行处理。

基于与方法同样的发明构思,本发明实施例提供了一种基于正则表达式的匹配装置,该装置包括:

确定模块,用于根据待匹配语句所属的业务类型,确定与所述业务类型对应的正则表达式集合;

处理模块,用于将所述待匹配语句与所述正则表达式集合中的正则表达式进行匹配,得到匹配后的语句;

其中,所述正则表达式集合中的正则表达式是按照如下步骤生成的:

确定所述正则表达式集合所属的业务类型对应的数据库;

将所述数据库中的字,按照词性进行分类,得到至少一种类型的字;

对于每种类型的字,根据语法结构,将该类型中的任意两个或两个以上的字组成词;

将所述数据库中的词和所组成的词,按照词性进行分类,得到至少一种类型的词;

将至少一种类型的字、至少一种类型的词,和/或至少一个用于匹配任意字符的特定符号分别作为正则表达式的匹配项,并根据语法结构,将所述匹配项进行排序,形成至少一个正则表达式。

可选的,所述处理模块具体用于:

将所述待匹配语句与所述正则表达式集合中的正则表达式中的每个匹配项进行匹配;

若所述待匹配语句与任一正则表达式的每个匹配项均匹配成功,且所述任一正则表达式的每个匹配项在所述待匹配语句中的排列顺序与在所述任一正则表达式中的排列顺序一致,根据所述任一正则表达式,确定匹配后的语句,其中,所述匹配后的语句包括所述待匹配语句中与所述任一表达式中的匹配项匹配的字符。

可选的,所述处理模块具体用于:

确定所述任一正则表达式中的特定符号在所述任一正则表达式中的位置;

根据所述特定符号的编号,确定所述任一正则表达式中所述特定符号相邻的匹配项的位置;

根据所述特定符号相邻的匹配项的编号,确定所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置;

根据所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置,确定所述待匹配语句中与所述特定符号匹配的字符。

可选的,所述处理模块具体用于:

若所述特定符号位于所述任一正则表达式中第一个位置,将所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符之前的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符;或者

若所述特定符号位于所述任一正则表达式中最后一个位置,将所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符之后的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符;或者

若所述特定符号位于所述任一正则表达式中除第一个位置与最后一个位置外的其他位置,将所述待匹配语句中与所述特定符号相邻的两个匹配项匹配的字符之间的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符。

可选的,所述处理模块还用于:

若所述任一正则表达式中的至少一个匹配项配置有过滤规则,确定所述任一正则表达式中具有过滤规则的匹配项的位置,所述过滤规则表示对待匹配语句中与所述过滤规则对应的匹配项匹配的字符执行的操作;

根据具有过滤规则的匹配项的位置,确定出所述匹配后的语句中与具有过滤规则的匹配项对应的字符;

根据所述过滤规则,对所述匹配后的语句中与具有过滤规则的匹配项对应的字符,进行处理。

本发明实施例提供的方法和装置中,根据待匹配语句所属的业务类型,确定与所述业务类型对应的正则表达式集合;将所述待匹配语句与所述正则表达式集合中的正则表达式进行匹配,得到匹配后的语句;所述正则表达式集合中的正则表达式是按照如下步骤生成的:确定所述正则表达式集合所属的业务类型对应的数据库;将所述数据库中的字,按照词性进行分类,得到至少一种类型的字;对于每种类型的字,根据语法结构,将该类型中的任意两个或两个以上的字组成词;将所述数据库中的词和所组成的词,按照词性进行分类,得到至少一种类型的词;将至少一种类型的字、至少一种类型的词,和/或至少一个用于匹配任意字符的特定符号分别作为正则表达式的匹配项,并根据语法结构,将所述匹配项进行排序,形成至少一个正则表达式。按上述步骤生成正则表达式,不需要逐个编写多个复杂的正则表达式,降低了正则表达式生成的难度,提高了匹配的灵活度。

附图说明

图1为本发明实施例提供的一种基于正则表达式的匹配方法流程图;

图2为本发明实施例提供的另一种基于正则表达式的匹配方法流程图;

图3为本发明实施例提供的一种基于正则表达式的匹配装置示意图。

具体实施方式

下面将结合附图,对本发明实施例提供的技术方案进行详细说明。

本发明实施例提供了一种基于正则表达式的匹配方法,如图1所示,包括如下操作:

步骤100、根据待匹配语句所属的业务类型,确定与所述业务类型对应的正则表达式集合。

具体的,根据所述待匹配语句所属的业务类型,从预先生成的正则表达式集合中,选择与所述待匹配语句所属的业务类型对应的正则表达式集合。

举例说明:假设待匹配语句为“打一个电话给妈妈吗”,所述待匹配语句所属的业务类型为语音通话业务。从预先生成的正则表达式集合中,选择语音通话业务对应的正则表达式集合。

其中,预先生成的正则表达式集合为多个,是根据不同的业务类型生成的,所述业务类型可以为语音通话业务、短信业务等,也可以为其它业务类型,本发明实施例中对业务类型不做限定。

步骤110、将所述待匹配语句与所述正则表达式集合中的正则表达式进行匹配,得到匹配后的语句。

其中,所述正则表达式集合中的正则表达式是按照如下步骤生成的:

确定所述正则表达式集合所属的业务类型对应的数据库;

将所述数据库中的字,按照词性进行分类,得到至少一种类型的字;

对于每种类型的字,根据语法结构,将该类型中的任意两个或两个以上的字组成词;

将所述数据库中的词和所组成的词,按照词性进行分类,得到至少一种类型的词;

将至少一种类型的字、至少一种类型的词,和/或至少一个用于匹配任意字符的特定符号分别作为正则表达式的匹配项,并根据语法结构,将所述匹配项进行排序,形成至少一个正则表达式。

其中,每种类型的字中包括至少一个字,每种类型的词中包括至少一个词。正则表达式中的匹配项可以是同一类型的字和/或词,也可以是一个用于匹配任意字符的特定符号。

可选的,本发明实施例中涉及的词性包括但不限于:动词、名词、介词、形容词等,是划分字或词类型的根据。

本发明实施例中,根据待匹配语句所属的业务类型,确定与所述业务类型对应的正则表达式集合;将所述待匹配语句与所述正则表达式集合中的正则表达式进行匹配,得到匹配后的语句;所述正则表达式集合中的正则表达式是按照如下步骤生成的:确定所述正则表达式集合所属的业务类型对应的数据库;将所述数据库中的字,按照词性进行分类,得到至少一种类型的字;对于每种类型的字,根据语法结构,将该类型中的任意两个或两个以上的字组成词;将所述数据库中的词和所组成的词,按照词性进行分类,得到至少一种类型的词;将至少一种类型的字、至少一种类型的词,和/或至少一个用于匹配任意字符的特定符号分别作为正则表达式的匹配项,并根据语法结构,将所述匹配项进行排序,形成至少一个正则表达式。按上述步骤生成正则表达式,不需要逐个编写多个复杂的正则表达式,降低了正则表达式生成的难度,提高了匹配的灵活度。

本发明实施例中,以构建树型结构的方式生成正则表达式,所形成的每种类型的字、以及每种类型词均作为树型结构的叶子节点,每种类型的字和/或词可以组成短句,所组成的短句作为该树型结构的枝,从而形成树型结构,即正则表达式集合。

本发明实施例中,在生成正则表达式时,所生成的正则表达式包括以下几种可能的实现方式:

方式1、所生成的正则表达式是所有类型的字、所有类型的词,以及至少一个特定符号,按照不同的排序方式生成的。

举例说明:假设有三种类型的字的集合,分别为A1,A2,A3;根据A1,A2,A3生成的词的集合分别为B1,B2,B3;特定符号为X;所生成的正则表达式E1为A1,A2,A3,B1,B2,B3和X,按照语法结构确定的排序方式形成的。

该方式中,所生成的正则表达式中的每个匹配项中可以包括同一类型的全部字和/或词,也可以包括同一类型的部分字和/或词。

方式2、所生成的正则表达式是部分类型的字、部分类型的词,以及至少一个特定符号,按照不同的排序方式生成的。

举例说明:假设有三种类型的字的集合,分别为A1,A2,A3;根据A1,A2,A3生成的词的集合分别为B1,B2,B3;特定符号为X;所生成的正则表达式E2为A1,A2,B1B2,和X,是按照语法结构确定的排序方式形成的。

该方式中,所生成的正则表达式的每个匹配项中可以包括同一类型的全部字和/或词,也可以包括同一类型的部分字和/或词。

方式3、所生成的正则表达式是全部类型的字,以及至少一个特定符号,按照不同的排序方式生成的。

举例说明:假设有三种类型的字的集合,分别为A1,A2,A3;特定符号为X;所生成的正则表达式E3为A1,A2,A3和X,是按照语法结构确定的排序方式形成的。

该方式中,所生成的正则表达式中的每个匹配项中可以包括同一类型的全部字,也可以包括同一类型的部分字。

方式4、所生成的正则表达式可以是部分类型的字,以及至少一个特定符号,按照不同的排序方式生成的。

举例说明:假设有三种类型的字的集合,分别为A1,A2,A3;特定符号为X;所生成的正则表达式E4为A1,A2和X,是按照语法结构确定的排序方式形成的。

该方式中,所生成的正则表达式中的每个匹配项中可以包括同一类型的全部字,也可以包括同一类型的部分字。

方式5、所生成的正则表达式可以是全部类型的词,以及至少一个特定符号,按照不同的排序方式生成的。

举例说明:假设有三种类型的字的集合,分别为A1,A2,A3;根据A1,A2,A3生成的词的集合分别为B1,B2,B3;特定符号为X;所生成的正则表达式E5为B1,B2,B3和X,是按照语法结构确定的排序方式形成的。

该方式中,所生成的正则表达式中的每个匹配项中可以包括同一类型的全部词,也可以包括同一类型的部分词。

方式6、所生成的正则表达式可以是部分类型的词,以及至少一特定符号,按照不同的排序方式生成的。

举例说明:假设有三种类型的字的集合,分别为A1,A2,A3;根据A1,A2,A3生成的词的集合分别为B1,B2,B3;特定符号为X;所生成的正则表达式E6为B1,B2和X,是按照语法结构确定的排序方式形成的。

该方式中,所生成的正则表达式中的每个匹配项中可以包括同一类型的全部词,也可以包括同一类型的部分词。

下面通过一个具体实施例,对本发明实施例中正则表达式的生成过程进行详细说明:

假设以语音通话业务为例,预先配置的语音通话业务相关的数据库中包括:打,一,下,电,个,话,号,码,座,机,手,拨,呼,叫,的,吗,吧,给,跟,和等等;

先将该数据库中的字按照词性进行分类,词性为动词的是:打、拨、呼、叫,将其保存为一类;词性为名词的是:电、话、号、码、座、机和手,将其保存为一类;词性为介词的是:给、跟、和,将其保存为一类;词性为数量词的是:一、个、下,将其保存为一类;无关词:的、吗、吧,将其保存为一类等等。

根据每一类字构建出词,例如,动词类的字构建出的词为:呼叫、拨打,将其保存为一类;名词类的字构建出的词为:电话,号码,座机,手机,将其保存为一类;量词类的字构建出的词为:一下,一个。

根据语法结构将所述字和/或词,按照排序方式的不同,生成多个正则表达式,例如:生成的一个正则表达式为:(((拨打|拨|打|呼叫)((一)?(下|个)?)(电话|号码|座机号码))(给|和|跟)(.*?))。其中,(.*?)为特殊字符。

一种可能的实现方式中,将所述待匹配语句与所述正则表达式集合中的正则表达式进行匹配,得到匹配后的语句,包括:

将所述待匹配语句与所述正则表达式集合中的正则表达式中的每个匹配项进行匹配;

若所述待匹配语句与任一正则表达式的每个匹配项均匹配成功,且所述任一正则表达式的每个匹配项在所述待匹配语句中的排列顺序与在所述任一正则表达式中的排列顺序一致,根据所述任一正则表达式,确定匹配后的语句,其中,所述匹配后的语句包括所述待匹配语句中与所述任一表达式中的匹配项匹配的字符。

一种可选的实现方式中,根据所述任一正则表达式,确定匹配后的语句,包括:

确定所述任一正则表达式中的特定符号在所述任一正则表达式中的位置;

根据所述特定符号的编号,确定所述任一正则表达式中所述特定符号相邻的匹配项的位置;

根据所述特定符号相邻的匹配项的编号,确定所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置;

根据所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置,确定所述待匹配语句中与所述特定符号匹配的字符。

本发明实施例中,根据所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置,确定所述待匹配语句中与所述特定符号匹配的字符,具体包括三种情况:

情况一、若所述特定符号位于所述任一正则表达式中第一个位置,将所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符之前的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符;

举例说明:假设正则表达式为(.*?)(拨打|拨|打|呼叫)(一)(下|个)(电话|号码|座机号码),待匹配语句为:“妈妈吗打一个电话”,所述特殊字符(.*?)匹配的字符包括所述待匹配语句中与所述特殊字符(.*?)相邻的匹配项(拨打|拨|打|呼叫)匹配的字符“打”之前的所有字符“妈妈吗”。

情况二、若所述特定符号位于所述任一正则表达式中最后一个位置,将所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符之后的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符;

举例说明:假设正则表达式为:(拨打|拨|打|呼叫)(一)(下|个)(电话|号码|座机号码)(给|和|跟)(.*?),待匹配语句为:“打一个电话给妈妈吗”,所述特殊字符(.*?)匹配的字符包括所述待匹配语句中与所述特殊字符(.*?)相邻的匹配项(给|和|跟)匹配的字符“给”之后的所有字符“妈妈吗”。

情况三、若所述特定符号位于所述任一正则表达式中除第一个位置与最后一个位置外的其他位置,将所述待匹配语句中与所述特定符号相邻的两个匹配项匹配的字符之间的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符。

举例说明:假设正则表达式为(给|和|跟)(.*?)(拨打|拨|打|呼叫)(一)(下|个)(电话|号码|座机号码),待匹配语句为:“给妈妈吗打一个电话”,所述特殊字符(.*?)匹配的字符包括所述待匹配语句中与所述特殊字符(.*?)相邻的两个匹配项(给|和|跟)和(拨打|拨|打|呼叫)匹配的字符“给”和“打”之间的所有字符“妈妈吗”。

基于上述任一实施例,本发明实施例中,任一正则表达式中的任一匹配项具有额外的过滤规则,则需要建立匹配项的位置与过滤规则之间的映射关系,例如,匹配项1具有过滤规则1,匹配项2具有过滤规则2,等等。这样,在执行完步骤100-110之后,根据该正则表达式的匹配项的位置与过滤规则之间的映射关系,确定出该正则表达式中具有过滤规则的匹配项的位置,并根据该正则表达式中具有过滤规则的匹配项的位置,确定出匹配后的语句中与该匹配项匹配的字符的位置,进一步根据该过滤规则,对该字符进行处理。

一种可选的实现方式中,若所述任一正则表达式中的至少一个匹配项配置有过滤规则,该方法还包括:

确定所述任一正则表达式中具有过滤规则的匹配项的位置,所述过滤规则表示对待匹配语句中与所述过滤规则对应的匹配项匹配的字符执行的操作;

根据具有过滤规则的匹配项的位置,确定出所述匹配后的语句中与具有过滤规则的匹配项对应的字符;

根据所述过滤规则,对所述匹配后的语句中与具有过滤规则的匹配项对应的字符,进行处理。

具体的,以语音通话业务为例,具有过滤规则的匹配项为特殊字符,具体的过滤规则为从已保存的通讯录中确定出与该具有过滤规则的匹配项对应的字符中相同的字符,将确定出的字符作为最终匹配后的字符。

例如,所述已保存的通讯录中的信息为:“爸爸”、“妈妈”、“姐姐”等,所述对应的字符“妈妈吗”,从已保存的通讯录中确定出于与所述匹配项匹配的对应的字符中相同的字符“妈妈”,作为最终匹配后的字符。

一种具体的实现方式中,在生成正则表达式后,将生成的正则表达式中所有匹配项,按从左到右的顺序依次进行编号。

相应的,在确定出匹配后的语句后,根据所述编号确定所述匹配后的语句中与具有过滤规则的匹配项匹配的字符。

在具体实现中,以括号表示正则表达式中各匹配项的位置,例如,字和词属于叶子节点(记为第一级节点),短句属于枝(记为第二级节点),记录每级节点的括号数目,并对括号进行编号,从而得到各个节点的位置,所述括号里的内容为一个匹配项,或至少两个匹配项的组合;

例如:1(2(3(拨打|拨|打|呼叫)4(5(一)?6(下|个)?)7(电话|号码|座机号码))8(给|和|跟)9(.*?)),其中,9位置为特殊字符的位置,数字1、2等为括号的编号,在语音通话业务中,(拨打|拨|打|呼叫)中的字和词均属于动词,(一)(下|个)中的字均属于数量词,(电话|号码|座机号码)中的词均属于名词,(给|和|跟)中的字均属于介词。

将待匹配语句“能帮我打个电话给妈妈吗?”与上述正则表达式进行匹配时,根据该正则表达式中的括号的编号,确定相应匹配项的位置:例如,“打”所在的匹配项的编号为3,“个”所在的匹配项的编号为6,“电话”所在的匹配项的编号为7,“给”所在的匹配项的编号为8,“妈妈吗”所在的特殊字符的编号为9;确定出编号为9的特殊字符所对应的字符“妈妈吗”,具有过滤规则的匹配项的编号为9,过滤规则为“妈妈吗”与语音通话业务对应的信息进行匹配,该信息为通讯录信息;

从通讯录信息中,确定出与“妈妈吗”中相同的字符“妈妈”,将确定出的“妈妈”作为最终匹配后的字符。

本发明实施例中,每种类型的字、以及每种类型词均作为树型结构的叶子节点,每种类型的字和/或词可以组成短句,所组成的短句作为该树型结构的枝,正则表达式中匹配项的编号的具体计算方式如公式一所示:

其中:n表示该枝含有的括号数目,ni叶子表示第i个叶子含有的括号数目,N叶子表示该枝中含有的叶子的数目。

本发明实施例中,第k个叶子第j个括号的编号如公式二所示:

其中:Ij表示第k个叶子第j个括号的编号;

第k个叶子需要通过过滤规则进行处理时,根据第k个叶子的编号进行定位。

举例说明,匹配语音通话业务时,((拨打|拨|打|呼叫)((一)?(下|个)?)(电话|号码|座机号码))短句是由3类词构成,其中((一)?(下|个)?)由2类字组成,按照公式一,((一)?(下|个)?)的括号数目为:

即1+1+1=3;

((拨打|拨|打|呼叫)((一)?(下|个)?)(电话|号码|座机号码))的括号数目为:

即1+3+1+1=6。

计算“下”在((一)?(下|个)?)的括号的编号,按照公式二,k=2,j=1,

Ij=1+j+1即为3;

那么“下”在((拨打|拨|打|呼叫)((一)?(下|个)?)(电话|号码|座机号码))的括号的编号,根据公式二,k=2,j=3,

Ij=1+j+1即为5。

下面通过一个具体实施例,对本发明实施例提供的一种基于正则表达式的匹配方法进行详细说明,如图2所示,包括:

步骤201、建立不同业务类型的基本数据库,对于每种业务类型的基本数据,将该数据库中的字按照词性进行分类。

步骤202、对于每种类型的字,根据语法结构,将该类型中的任意两个或两个以上的字组成词。

步骤203、根据语法结构,将至少一种类型的字、至少一种类型的词,和/或至少一个特殊字符,按照不同的排序方式,形成至少一个正则表达式。

步骤204、将生成的正则表达式组成正则表达式集合。

步骤205、将待匹配语句与正则表达式集合中的正则表达式进行匹配,直至与任一正则表达式的每个匹配项均匹配,确定出匹配后的语句。

步骤206、确定出待匹配语句中具有过滤规则的匹配项;

步骤207、将所述具有过滤规则的匹配项对应的字符,与已保存的所述正则表达式集合所属的业务类型对应的信息进行匹配,确定出最终匹配后的字符。

基于与方法同样的发明构思,本发明实施例还提供一种基于正则表达式的匹配装置,如图3所示,包括:

确定模块301,用于根据待匹配语句所属的业务类型,确定与所述业务类型对应的正则表达式集合。

处理模块302,用于将所述待匹配语句与所述正则表达式集合中的正则表达式进行匹配,得到匹配后的语句;

其中,所述正则表达式集合中的正则表达式是按照如下步骤生成的:

确定所述正则表达式集合所属的业务类型对应的数据库;

将所述数据库中的字,按照词性进行分类,得到至少一种类型的字;

对于每种类型的字,根据语法结构,将该类型中的任意两个或两个以上的字组成词;

将所述数据库中的词和所组成的词,按照词性进行分类,得到至少一种类型的词;

将至少一种类型的字、至少一种类型的词,和/或至少一个用于匹配任意字符的特定符号分别作为正则表达式的匹配项,并根据语法结构,将所述匹配项进行排序,形成至少一个正则表达式。

本发明实施例中,根据待匹配语句所属的业务类型,确定与所述业务类型对应的正则表达式集合;将所述待匹配语句与所述正则表达式集合中的正则表达式进行匹配,得到匹配后的语句;所述正则表达式集合中的正则表达式是按照如下步骤生成的:确定所述正则表达式集合所属的业务类型对应的数据库;将所述数据库中的字,按照词性进行分类,得到至少一种类型的字;对于每种类型的字,根据语法结构,将该类型中的任意两个或两个以上的字组成词;将所述数据库中的词和所组成的词,按照词性进行分类,得到至少一种类型的词;将至少一种类型的字、至少一种类型的词,和/或至少一个用于匹配任意字符的特定符号分别作为正则表达式的匹配项,并根据语法结构,将所述匹配项进行排序,形成至少一个正则表达式。按上述步骤生成正则表达式,不需要逐个编写多个复杂的正则表达式,降低了正则表达式生成的难度,提高了匹配的灵活度。

可选的,所述处理模块具体用于:

将所述待匹配语句与所述正则表达式集合中的正则表达式中的每个匹配项进行匹配;

若所述待匹配语句与任一正则表达式的每个匹配项均匹配成功,且所述任一正则表达式的每个匹配项在所述待匹配语句中的排列顺序与在所述任一正则表达式中的排列顺序一致,根据所述任一正则表达式,确定匹配后的语句,其中,所述匹配后的语句包括所述待匹配语句中与所述任一表达式中的匹配项匹配的字符。

可选的,所述处理模块在根据所述任一正则表达式,确定匹配后的语句时,具体用于:

确定所述任一正则表达式中的特定符号在所述任一正则表达式中的位置;

根据所述特定符号的编号,确定所述任一正则表达式中所述特定符号相邻的匹配项的位置;

根据所述特定符号相邻的匹配项的编号,确定所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置;

根据所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符的位置,确定所述待匹配语句中与所述特定符号匹配的字符。

可选的,所述处理模块具体用于:

若所述特定符号位于所述任一正则表达式中第一个位置,将所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符之前的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符;或者

若所述特定符号位于所述任一正则表达式中最后一个位置,将所述待匹配语句中与所述特定符号相邻的匹配项匹配的字符之后的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符;或者

若所述特定符号位于所述任一正则表达式中除第一个位置与最后一个位置外的其他位置,将所述待匹配语句中与所述特定符号相邻的两个匹配项匹配的字符之间的所有字符,确定为所述待匹配语句中与所述特定符号匹配的字符。

可选的,所述处理模块还用于:

若所述任一正则表达式中的至少一个匹配项配置有过滤规则,确定所述任一正则表达式中具有过滤规则的匹配项的位置,所述过滤规则表示对待匹配语句中与所述过滤规则对应的匹配项匹配的字符执行的操作;

根据具有过滤规则的匹配项的位置,确定出所述匹配后的语句中与具有过滤规则的匹配项对应的字符;

根据所述过滤规则,对所述匹配后的语句中与具有过滤规则的匹配项对应的字符,进行处理。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1