一种字符串匹配的方法和装置制造方法及图纸

技术编号:16969811 阅读:27 留言:0更新日期:2018-01-07 06:41
本发明专利技术公开了一种字符串匹配的方法和装置,方法包括:初始化带有模糊节点的AC状态机;其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;将目标字符串输入到AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定出所述目标字符串匹配的一个或多个规则字符串,根据匹配出的规则字符串执行相应操作。本实施例的技术方案,通过获取目标字符串后,将目标字符串输入到AC状态机中进行匹配,以确定出目标字符串中匹配的一个或多个规则字符串,实现了多段模糊匹配,保证了规则字符串定义的灵活能力,满足了应用需求。

【技术实现步骤摘要】
一种字符串匹配的方法和装置
本专利技术涉及互联网
,特别涉及一种字符串匹配的方法和装置。
技术介绍
多模式匹配问题是计算机科学的基本问题之一,多模式匹配问题可以简单描述为:一个目标字符串和一个模式字符串集合,判断此目标字符串包含模式字符串集合中的多个模式字符串。AC(Aho-Corasick)算法是一种经典的多模式匹配算法,该算法利用有限状态机将字符比较转化为状态转移,例如,将被匹配的目标字符串作为该有限状态机的输入使该有限状态机根据目标字符串进行状态转换,当有限状态机达到某些特定的状态时则说明发生模式匹配。但是,现有技术的AC算法在进行多模式匹配时还存在缺陷,例如,定义模式字符串的灵活性差,效率低,不能满足应用需求。
技术实现思路
本专利技术提供了一种字符串匹配的方法和装置,以解决现有AC算法在进行多模式匹配时存在的模式字符串的定义灵活性差,效率低,不能满足应用需求的问题。根据本申请的一个方面,提供了一种字符串匹配的方法,包括:初始化带有模糊节点的AC状态机;其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;将目标字符串输入到所述AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定出所述目标字符串匹配的一个或多个规则字符串;根据匹配出的规则字符串执行相应操作。根据本专利技术的另一个方面,提供了一种字符串匹配的装置,包括:初始化模块,用于初始化带有模糊节点的AC状态机;其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;匹配模块,用于将目标字符串输入到所述AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定出所述目标字符串匹配的一个或多个规则字符串;操作模块,用于根据匹配出的规则字符串执行相应操作。本专利技术的有益效果是,本专利技术通过初始化带有模糊节点的AC状态机,并将目标字符串输入到AC状态机中,比较目标字符串中各字符与AC状态机中各节点对应的字符,确定出匹配的一个或多个规则字符串;由于本实施例的AC状态机可以根据各规则字符串包含的字符之间的通配关系生成对应的模糊节点,从而一方面,能够利用AC状态机匹配的高效率的特点,提高了多模式匹配的效率;另一方面,满足了字符间存在通配关系的字符串序列的匹配需求,解决了现有AC算法不支持字符串序列的多模式匹配的问题,保证了模式字符串定义的灵活性,即,模式字符串可以包含通配符。附图说明图1为本专利技术一个实施例的一种字符串匹配的方法的流程示意图;图2为本专利技术一个实施例的一种字符串匹配的装置的框图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。图1为本专利技术一个实施例的一种字符串匹配的方法的流程示意图,如图1所示,本实施例的字符串匹配的方法,包括如下步骤:步骤S101,初始化带有模糊节点的AC状态机;其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;步骤S102,将目标字符串输入到AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定所述目标字符串出匹配的一个或多个规则字符串;步骤S103,根据匹配出的规则字符串执行相应操作。图1所示可知,本实施例的字符串匹配的方法,通过初始化带有模糊节点的AC状态机,将目标字符串输入到AC状态机中进行匹配,以确定出目标字符串中匹配的一个或多个规则字符串,由于本实施例的AC状态机能够根据各规则字符串包含的字符之间的通配关系生成对应的模糊节点,实现了多模式的模糊匹配,保证了规则字符串定义的灵活能力,满足了应用需求。这里需要说明的是,常规节点是相对于模糊节点而言的,常规节点是根据规则字符串之间的非通配关系生成的,例如,根据规则字符串:abc.com.cn分别生成字符a,b,c,c,o,m对应的常规节点。由于该规则字符串中不存在非通配关系,即,字符之间都是常规关系,所以生成的是常规节点。而模糊节点是根据规则字符串之间的通配关系生成的,通配关系是某个字符的下一个字符的内容不具体,即是一个通配符,用于匹配任意字符。考虑到互联网用户的上网日志中的统一资源定位符URL(UniformResourceLocator)是识别用户具体行为的重要依据。为了识别URL,本实施例预先定义一些感兴趣的规则字符串并为这些字符串设置属性信息,例如定义规则www.abc.com/.*music.*piano表示在www.abc.com网站访问了钢琴音乐的行为。如果某个目标字符串URL和这个规则匹配,就为该目标字符串URL打上这个规则对应的“钢琴音乐”标签。但是,由于实际应用时,规则的数量较大,并且URL的数量更为巨大,如果使用正则表达式定义规则,M个规则和N个URL进行匹配时,就会出现M*N次正则表达式匹配,这样的效率是极低的。而如果把规则定义成不含通配符的字符串,如www.abc.com,这样虽然可以通过多模匹配算法实现快速匹配,但是规则如果失去了通配符,也就失去了灵活的定义能力,因此这种方法导致规则字符串的灵活性受到极大限制,一般只能匹配域名,不能满足应用需求。针对上述问题,本实施例提出对AC算法进行改进,具体的,为模糊字符对应的节点添加模糊子节点,实现多段的模糊匹配,并修改AC状态机匹配逻辑,为模糊子节点进行额外的查找,从而既保证模式匹配的高效性,又支持字符串序列(字符串序列是由多个字符串组成的有序的,有任意字符串间隔的序列,例如ab.*cd.*ef)的模式匹配。本实施例中的规则字符串包括:含通配符的规则字符串以及不含通配符的规则字符串,前述步骤S101中的初始化带有模糊节点的AC状态机包括:根据规则字符串包含的模糊字符以及该模糊字符与下一个字符之间的通配关系,为该模糊字符生成模糊子节点,并设置模糊子节点的失败节点;根据该模糊字符与下一个字符之间的非通配关系,为该模糊字符生成常规子节点,其中,模糊字符是与通配符相邻的字符。例如字符串*ab*c,a的前一个字符是模糊字符,a一个模糊子节点b是a的常规子节点,同时b也是一个模糊字符,c是b的模糊子节点。这里,在初始化AC状态机时,本实施例的方法为每个模糊节点设置失败节点,从而能够保证在某个模糊子节点匹配失败时返回其失败节点,以匹配其他的模糊子节点和规则字符串。在AC状态机中,每个节点都有自己的失败节点,而模糊子节点的失败节点是它的父节点例如,节点(F),需要说明的是,模糊子节点的子节点们的失败节点不一定是节点(F),也就是说,每个模糊子节点都有其对应的失败节点。实际应用中,当在某个模糊子节点处字符匹配失败时,应返回该模糊子节点的具体对应的失败节点。在AC状态机构建完成后,每个字符的匹配过程可以分为两种情况,即与常规节点的匹配,与模糊节点的匹配,实际应用中,这个匹配操作通常是并行的,下面介绍第一种情况常规匹配。常规匹配操作为:获取目标字符串的当前字符,比较当前字符与常规子节点对应的字符,相同则继续比较所述当前字符的下一个字符与所述常规子节点的子节点对应的字符,相同则继续依次比较目标字符本文档来自技高网...
一种字符串匹配的方法和装置

【技术保护点】
一种字符串匹配的方法,其特征在于,包括:初始化带有模糊节点的AC状态机;其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;将目标字符串输入到AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定出所述目标字符串匹配的一个或多个规则字符串;根据匹配出的规则字符串执行相应操作。

【技术特征摘要】
1.一种字符串匹配的方法,其特征在于,包括:初始化带有模糊节点的AC状态机;其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;将目标字符串输入到AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定出所述目标字符串匹配的一个或多个规则字符串;根据匹配出的规则字符串执行相应操作。2.根据权利要求1所述的方法,其特征在于,所述规则字符串包括:含通配符的规则字符串以及不含通配符的规则字符串,初始化带有模糊节点的AC状态机包括:根据规则字符串包含的模糊字符以及该模糊字符与下一个字符之间的通配关系,为该模糊字符生成模糊子节点,并设置模糊子节点的父节点作为其失败节点;根据该模糊字符与下一个字符之间的非通配关系,为该模糊字符生成常规子节点,其中,模糊字符是指与通配符相邻的字符。3.根据权利要求2所述的方法,其特征在于,比较所述目标字符串中各字符与所述AC状态机中各节点对应字符,确定出所述目标字符串匹配的一个或多个规则字符串包括:获取目标字符串的当前字符,根据AC状态机中节点对应的子节点的类型,将当前字符与常规子节点对应的字符比较时,进行常规匹配操作,包括:比较当前字符与常规子节点对应的字符,相同则继续比较所述当前字符的下一个字符与所述常规子节点的子节点对应的字符,相同则继续依次比较目标字符串的剩余字符直至目标字符串结束,从而确定出匹配的规则字符串;将当前字符与模糊子节点对应的字符比较时,进行模糊匹配操作,模糊匹配操作包括:比较目标字符串的当前字符与模糊子节点对应的字符,并在比较之后返回模糊子节点的失败节点;若当前字符与模糊子节点对应的字符不相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述失败节点的各模糊子节点对应的字符;若当前字符与任一模糊子节点对应的字符相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述字符相同的模糊子节点的子节点对应的字符,相同则继续比较目标字符串的剩余字符与所述字符相同的模糊子节点的子节点对应的字符,直至目标字符串结束,从而确定出匹配的规则字符串。4.根据权利要求1所述的方法,其特征在于,所述规则字符串为既定的统一资源定位符URL,所述目标字符串为用户输入的URL。5.根据权利要求4所述的方法,其特征在于,根据匹配出的规则字符串执行相应操作包括:根据目标字符串所匹配的一个或多个...

【专利技术属性】
技术研发人员:刘欣然李晓宇王文博徐佳瑞李明周宇
申请(专利权)人:北京神州泰岳智能数据技术有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1