CN107545071A - 一种字符串匹配的方法和装置 - Google Patents
一种字符串匹配的方法和装置 Download PDFInfo
- Publication number
- CN107545071A CN107545071A CN201710862074.XA CN201710862074A CN107545071A CN 107545071 A CN107545071 A CN 107545071A CN 201710862074 A CN201710862074 A CN 201710862074A CN 107545071 A CN107545071 A CN 107545071A
- Authority
- CN
- China
- Prior art keywords
- character
- string
- node
- child node
- regular
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种字符串匹配的方法和装置,方法包括:初始化带有模糊节点的AC状态机;其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;将目标字符串输入到AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定出所述目标字符串匹配的一个或多个规则字符串,根据匹配出的规则字符串执行相应操作。本实施例的技术方案,通过获取目标字符串后,将目标字符串输入到AC状态机中进行匹配,以确定出目标字符串中匹配的一个或多个规则字符串,实现了多段模糊匹配,保证了规则字符串定义的灵活能力,满足了应用需求。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种字符串匹配的方法和装置。
背景技术
多模式匹配问题是计算机科学的基本问题之一,多模式匹配问题可以简单描述为:一个目标字符串和一个模式字符串集合,判断此目标字符串包含模式字符串集合中的多个模式字符串。
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(Uniform ResourceLocator)是识别用户具体行为的重要依据。为了识别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状态机构建完成后,每个字符的匹配过程可以分为两种情况,即与常规节点的匹配,与模糊节点的匹配,实际应用中,这个匹配操作通常是并行的,下面介绍第一种情况常规匹配。
常规匹配操作为:获取目标字符串的当前字符,比较当前字符与常规子节点对应的字符,相同则继续比较所述当前字符的下一个字符与所述常规子节点的子节点对应的字符,相同则继续依次比较目标字符串的剩余字符直至目标字符串结束,从而确定出匹配的规则字符串。实际应用中具体的比较可以采用哈希算法实现,通过一次比较即可确定所有常规子节点的字符是不是和目标字符串的当前字符相同,例如,当前字符a与三个节点分别对应的字符a、b、c的比较是一个操作,而不是三个操作,即字符的比较是并行的。
第二种情况是当前字符与模糊子节点的模糊匹配操作。具体的,包括:比较目标字符串的当前字符与模糊子节点对应的字符,并在比较之后返回模糊子节点的失败节点;
根据当前字符与模糊子节点对应的字符的比较结果,若当前字符与模糊子节点对应的字符不相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述失败节点的各模糊子节点对应的字符;若当前字符与任一模糊子节点对应的字符相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述字符相同的模糊子节点的子节点对应的字符,相同则继续比较目标字符串的剩余字符与所述字符相同的模糊子节点的子节点对应的字符,例如,将模糊子节点成为第一子节点的话,则是将当前字符和第一子节点的字符比较,相同则获取目标字符串当前字符的下一个字符和第一子节点的子节点,即第二子节点对应的字符比较,相同则获取目标字符串下一个字符的下一个字符和第二子节点的子节点,即第三子节点对应的字符比较,如此重复,直至目标字符串结束,从而确定出匹配的规则字符串。
需要说明的是,从前述说明可以看出,在目标字符串的当前字符与模糊子节点对应的字符比较时,无论是否两字符是否相同,即无论是否匹配成功,控制逻辑都是返回模糊子节点的失败节点,即,返回其父节点,这是为了保证能够在与一个模糊子节点匹配失败时,有机会与其他模糊子节点对应的字符匹配,从而找到更多的匹配的规则字符串,而不是直接结束流程。
以下特举例示意性说明本实施例的字符串匹配方法的匹配过程。
首先,预先定义规则字符串,如下所示,本实施例定义了四个规则字符串,每个规则字符串都既定的URL字符串,规则一和规则二是不含通配符的字符串,规则三和规则四是含通配符(即*)的字符串,
规则一:abc.com.cn
规则二:abc.com/cc
规则三:abc.com*game
规则四:abc.com*tv
这里的通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。本实施例中以星号(*)为例进行的说明。
接着,初始化AC状态机。
AC算法的思想是使用所有规则字符串生成一个状态机,输入字符串进入状态机后根据每个输入字符来改变状态,当发现可以输出时就表示发生了一个成功的匹配。AC状态机在使用之前需要初始化,具体的初始化可分为两个步骤,步骤一是根据规则字符串生成AC树,树的节点是字符,边表示字符的连续,规则字符串的最后一个字符指示的节点即为输出节点。
在前述步骤一中,AC状态机根据字符之间的通配关系生成对应的模糊节点,即模糊节点在步骤一对应的处理方式是:对规则字符串中的字符进行判断,如果某个字符的下一个字符为通配符(如*),则为该字符的节点添加对应的模糊节点,即,生成该字符指示的节点的模糊子节点,且配置该字符的节点与模糊子节点之间为父子关系一个例子中,模糊子节点指示的字符为通配符*之后的字符。
很明显,使用规则字符串来构造AC树是非常容易的,但是要想使用这个树来进行匹配,还需要进行步骤二,即,为每个节点构造失败节点。所谓失败节点,就是当无法在树中继续向下查找时,应该跳转到哪个节点。每个节点都需要有一个失败节点。为某个节点添加失败节点的方式是这样的:假设需要为节点a添加失败节点,节点a的父节点是b,节点b的失败节点是c,那么节点a的失败节点应该从c的子节点里查找。
本发明实施例的方法在步骤二对模糊节点的失败节点的处理方式是,把模糊子节点的失败节点设置成模糊子节点的父节点,如此保证了当在模糊子节点发生匹配失败时AC状态机能够返回该模糊子节点的父节点,以快速匹配到多个模式字符串。
由此,通过构造AC树并在树构造完毕后,重新用所有规则字符串,为树中的每个节点设置失败节点。
具体到本实施例中,在AC树结构里,字符m对应的节点(abc.com的最后一个字符)有两个常规子节点:句号(.)和斜杠(/),以及两个模糊子节点:g和t。字符m对应的节点为模糊节点。
接下里是具体的匹配过程。
在进行字符串匹配时,例如,对于用户输入的目标字符串:
abc.com.cn/game/tv
字符m之前的匹配过程可以参见现有AC算法的匹配过程,为简明起见,这里不再赘述。
1)当匹配到字符m,准备继续向下匹配时,根据常规匹配操作先进入规则一的子节点,即进入(.)并行的进入字符m对应的节点(下称m节点)的两个模糊子节点(g和t)尝试一下,因为句号(.)既不是g也不是t,所以模糊这边继续停留在m节点(这是由于模糊子节点g和t的父节点都是m),等待下一个字符再做尝试。
2)目标字符串的下一个字符是c,这个字符让输入的目标字符串继续在规则一的子节点中前进,模糊子节点则继续尝试,因为c既不是g也不是t,所以模糊这边继续停留在m节点,等待下一个字符再做比较。
3)目标字符串的下一个字符是n,此时,规则一已经匹配成功,模糊这边继续停留在m节点。
4)目标字符串的下一个字符是斜杠(/),与g和t均不相同,所以模糊这边继续停留在m节点。
5)目标字符串的下一个字符是g,这时可以进入规则三的分支,这时对于目标字符串的下一个字符,出发节点从一个变成两个,即节点m和节点g;待匹配的字符从两个变成三个,即a、g和t。
6)继续匹配,直至目标字符串结束,即目标字符串的字符全部比较完毕。
经过上述过程最终可以匹配到规则一、规则三和规则四。
由此,通过应用改进后的AC状态机,对于包含*通配符的规则实现了多段高效匹配,并且由于支持规则字符串中包含通配符,从而保证了定义规则的灵活性,满足了实际需求。
在本实施例的方法中还包括得到匹配的规则一、规则三和规则四之后,根据这三个规则对应的属性信息,即可识别出用户的浏览行为。例如,根据匹配的规则一abc.com.cn,可以得出用户当前浏览行为为浏览了abc.com.cn的网站。
与前述方法相对应的,本发明实施例还提供了一种字符串匹配的装置,如图2所示,该字符串匹配的装置20包括:
初始化模块201,用于初始化带有模糊节点的AC状态机;
其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;
匹配模块202,用于将目标字符串输入到AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定出所述目标字符串匹配的一个或多个规则字符串;
操作模块203,用于根据匹配出的规则字符串执行相应操作。
本发明一个实施例中,规则字符串包括:含通配符的规则字符串以及不含通配符的规则字符串,
初始化模块201,用于根据各规则字符串包含的字符构建AC状态机,具体包括:根据规则字符串包含的模糊字符以及该模糊字符与下一个字符之间的通配关系,为该模糊字符生成模糊子节点,并设置模糊子节点的父节点作为其失败节点;根据该模糊字符与下一个字符之间的非通配关系,为该模糊字符生成常规子节点,其中,模糊字符是与通配符相邻的字符。
本发明一个实施例中匹配模块202具体用于,获取目标字符串的当前字符,根据AC状态机中节点对应的子节点的类型,将当前字符与常规子节点对应的字符比较时进行常规匹配操作,包括:比较当前字符与常规子节点对应的字符,相同则继续比较所述当前字符的下一个字符与所述常规子节点的子节点对应的字符,相同则继续依次比较目标字符串的剩余字符直至目标字符串结束,从而确定出匹配的规则字符串;
将当前字符与模糊子节点对应的字符比较时,进行模糊匹配操作,包括:将目标字符串的当前字符与模糊子节点对应的字符比较,并在比较之后返回模糊子节点的失败节点;
若当前字符与模糊子节点对应的字符不相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述失败节点的各模糊子节点对应的字符;若当前字符与任一模糊子节点对应的字符相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述字符相同的模糊子节点的子节点对应的字符,相同则继续比较目标字符串的剩余字符与所述字符相同的模糊子节点的子节点对应的字符,直至目标字符串结束,从而确定出匹配的规则字符串。
本发明一个实施例中规则字符串为既定的统一资源定位符URL,目标字符串为用户输入的URL。
本发明一个实施例中操作模块203,用于根据目标字符串所匹配的一个或多个规则字符串对应的属性信息,识别用户的浏览行为。
需要说明的是,本实施例的这种字符串匹配的装置的工作过程是和前述字符串匹配方法的步骤对应的,因此,本实施例中字符串匹配的装置的更多细节可参见前述方法实施例的步骤中的相关说明,这里不再赘述。
综上所述,根据本发明的技术方案,通过初始化带有模糊节点的AC状态机,将目标字符串输入到AC状态机中进行匹配,以确定出目标字符串中匹配的一个或多个规则字符串,由于本实施例的AC状态机能够根据各规则字符串包含的字符之间的通配关系生成对应的模糊节点,相比于正则表达式的实现方案,极大的提高了匹配效率。解决了原始AC算法不能进行字符串序列匹配的问题。实现了字符串序列的多模匹配,满足了应用需求。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
需要说明的是术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种字符串匹配的方法,其特征在于,包括:
初始化带有模糊节点的AC状态机;
其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;
将目标字符串输入到AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定出所述目标字符串匹配的一个或多个规则字符串;
根据匹配出的规则字符串执行相应操作。
2.根据权利要求1所述的方法,其特征在于,
所述规则字符串包括:含通配符的规则字符串以及不含通配符的规则字符串,
初始化带有模糊节点的AC状态机包括:
根据规则字符串包含的模糊字符以及该模糊字符与下一个字符之间的通配关系,为该模糊字符生成模糊子节点,并设置模糊子节点的父节点作为其失败节点;根据该模糊字符与下一个字符之间的非通配关系,为该模糊字符生成常规子节点,其中,模糊字符是指与通配符相邻的字符。
3.根据权利要求2所述的方法,其特征在于,比较所述目标字符串中各字符与所述AC状态机中各节点对应字符,确定出所述目标字符串匹配的一个或多个规则字符串包括:
获取目标字符串的当前字符,根据AC状态机中节点对应的子节点的类型,将当前字符与常规子节点对应的字符比较时,进行常规匹配操作,包括:比较当前字符与常规子节点对应的字符,相同则继续比较所述当前字符的下一个字符与所述常规子节点的子节点对应的字符,相同则继续依次比较目标字符串的剩余字符直至目标字符串结束,从而确定出匹配的规则字符串;
将当前字符与模糊子节点对应的字符比较时,进行模糊匹配操作,模糊匹配操作包括:比较目标字符串的当前字符与模糊子节点对应的字符,并在比较之后返回模糊子节点的失败节点;
若当前字符与模糊子节点对应的字符不相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述失败节点的各模糊子节点对应的字符;若当前字符与任一模糊子节点对应的字符相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述字符相同的模糊子节点的子节点对应的字符,相同则继续比较目标字符串的剩余字符与所述字符相同的模糊子节点的子节点对应的字符,直至目标字符串结束,从而确定出匹配的规则字符串。
4.根据权利要求1所述的方法,其特征在于,所述规则字符串为既定的统一资源定位符URL,所述目标字符串为用户输入的URL。
5.根据权利要求4所述的方法,其特征在于,根据匹配出的规则字符串执行相应操作包括:根据目标字符串所匹配的一个或多个规则字符串对应的属性信息,识别用户的浏览行为。
6.一种字符串匹配的装置,其特征在于,包括:
初始化模块,用于初始化带有模糊节点的AC状态机;
其中,所述AC状态机根据各规则字符串包含的字符之间的非通配关系生成常规节点,并根据字符之间的通配关系生成对应的模糊节点;
匹配模块,用于将目标字符串输入到所述AC状态机中,比较所述目标字符串中各字符与所述AC状态机中各节点对应的字符,确定出所述目标字符串匹配的一个或多个规则字符串;
操作模块,用于根据匹配出的规则字符串执行相应操作。
7.根据权利要求6所述的装置,其特征在于,
所述规则字符串包括:含通配符的规则字符串以及不含通配符的规则字符串,
初始化模块,具体用于根据规则字符串包含的模糊字符以及该模糊字符与下一个字符之间的通配关系,为该模糊字符生成模糊子节点,并设置模糊子节点的父节点作为其失败节点;根据该模糊字符与下一个字符之间的非通配关系,为该模糊字符生成常规子节点,其中,模糊字符是指与通配符相邻的字符。
8.根据权利要求7所述的装置,其特征在于,所述匹配模块具体用于获取目标字符串的当前字符,根据AC状态机中节点对应的子节点的类型,将当前字符与常规子节点对应的字符比较时进行常规匹配操作,包括:比较当前字符与常规子节点对应的字符,相同则继续比较所述当前字符的下一个字符与所述常规子节点的子节点对应的字符,相同则继续依次比较目标字符串的剩余字符直至目标字符串结束,从而确定出匹配的规则字符串;
将当前字符与模糊子节点对应的字符比较时,进行模糊匹配操作,包括:将目标字符串的当前字符与模糊子节点对应的字符比较,并在比较之后返回模糊子节点的失败节点;
若当前字符与模糊子节点对应的字符不相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述失败节点的各模糊子节点对应的字符;若当前字符与任一模糊子节点对应的字符相同,则获取所述当前字符的下一个字符,比较该下一个字符与所述字符相同的模糊子节点的子节点对应的字符,相同则继续比较目标字符串的剩余字符与所述字符相同的模糊子节点的子节点对应的字符,直至目标字符串结束,从而确定出匹配的规则字符串。
9.根据权利要求6所述的装置,其特征在于,所述规则字符串为既定的统一资源定位符URL,所述目标字符串为用户输入的URL。
10.根据权利要求9所述的装置,其特征在于,所述操作模块具体用于根据目标字符串所匹配的一个或多个规则字符串对应的属性信息,识别用户的浏览行为。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710862074.XA CN107545071B (zh) | 2017-09-21 | 2017-09-21 | 一种字符串匹配的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710862074.XA CN107545071B (zh) | 2017-09-21 | 2017-09-21 | 一种字符串匹配的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107545071A true CN107545071A (zh) | 2018-01-05 |
CN107545071B CN107545071B (zh) | 2020-02-07 |
Family
ID=60964204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710862074.XA Active CN107545071B (zh) | 2017-09-21 | 2017-09-21 | 一种字符串匹配的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107545071B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628966A (zh) * | 2018-04-20 | 2018-10-09 | 武汉绿色网络信息服务有限责任公司 | 一种基于字符串的快速匹配识别方法和装置 |
CN109271419A (zh) * | 2018-09-03 | 2019-01-25 | 河北工业大学 | 一种无间隙约束的在线串匹配方法 |
CN110222143A (zh) * | 2019-05-31 | 2019-09-10 | 北京小米移动软件有限公司 | 字符串匹配方法,装置,存储介质及电子设备 |
WO2020107359A1 (zh) * | 2018-11-30 | 2020-06-04 | 唐山曹妃甸联城科技有限公司 | 一种规则匹配方法及装置 |
CN111817888A (zh) * | 2020-06-29 | 2020-10-23 | 中孚安全技术有限公司 | 一种基于单一状态机的网络日志解析方法 |
CN113420192A (zh) * | 2021-06-09 | 2021-09-21 | 湖南大学 | 一种基于模糊匹配的ui元素搜索方法 |
CN114168809A (zh) * | 2021-11-22 | 2022-03-11 | 中核核电运行管理有限公司 | 基于相似度的文档字符串编码匹配方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009660A (zh) * | 2007-01-19 | 2007-08-01 | 杭州华为三康技术有限公司 | 处理分段报文模式匹配的通用方法及装置 |
CN101441664A (zh) * | 2008-12-03 | 2009-05-27 | 北京启明星辰信息技术股份有限公司 | 匹配规则包含可选字符的并行多模式匹配的方法及系统 |
US20110197149A1 (en) * | 2010-02-11 | 2011-08-11 | International Business Machines Coporation | Xml post-processing hardware acceleration |
CN102646123A (zh) * | 2012-02-23 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | 多模式匹配方法、装置和设备 |
CN102646115A (zh) * | 2012-02-17 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | Ac状态机的构建方法及装置 |
CN103093147A (zh) * | 2011-11-02 | 2013-05-08 | 中国移动通信集团广东有限公司 | 一种识别信息的方法和电子装置 |
-
2017
- 2017-09-21 CN CN201710862074.XA patent/CN107545071B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009660A (zh) * | 2007-01-19 | 2007-08-01 | 杭州华为三康技术有限公司 | 处理分段报文模式匹配的通用方法及装置 |
CN101441664A (zh) * | 2008-12-03 | 2009-05-27 | 北京启明星辰信息技术股份有限公司 | 匹配规则包含可选字符的并行多模式匹配的方法及系统 |
US20110197149A1 (en) * | 2010-02-11 | 2011-08-11 | International Business Machines Coporation | Xml post-processing hardware acceleration |
CN103093147A (zh) * | 2011-11-02 | 2013-05-08 | 中国移动通信集团广东有限公司 | 一种识别信息的方法和电子装置 |
CN102646115A (zh) * | 2012-02-17 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | Ac状态机的构建方法及装置 |
CN102646123A (zh) * | 2012-02-23 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | 多模式匹配方法、装置和设备 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628966A (zh) * | 2018-04-20 | 2018-10-09 | 武汉绿色网络信息服务有限责任公司 | 一种基于字符串的快速匹配识别方法和装置 |
CN108628966B (zh) * | 2018-04-20 | 2019-06-14 | 武汉绿色网络信息服务有限责任公司 | 一种基于字符串的快速匹配识别方法和装置 |
CN109271419A (zh) * | 2018-09-03 | 2019-01-25 | 河北工业大学 | 一种无间隙约束的在线串匹配方法 |
CN109271419B (zh) * | 2018-09-03 | 2021-06-22 | 河北工业大学 | 一种无间隙约束的在线串匹配方法 |
WO2020107359A1 (zh) * | 2018-11-30 | 2020-06-04 | 唐山曹妃甸联城科技有限公司 | 一种规则匹配方法及装置 |
CN110222143A (zh) * | 2019-05-31 | 2019-09-10 | 北京小米移动软件有限公司 | 字符串匹配方法,装置,存储介质及电子设备 |
CN110222143B (zh) * | 2019-05-31 | 2022-11-04 | 北京小米移动软件有限公司 | 字符串匹配方法,装置,存储介质及电子设备 |
CN111817888A (zh) * | 2020-06-29 | 2020-10-23 | 中孚安全技术有限公司 | 一种基于单一状态机的网络日志解析方法 |
CN113420192A (zh) * | 2021-06-09 | 2021-09-21 | 湖南大学 | 一种基于模糊匹配的ui元素搜索方法 |
CN113420192B (zh) * | 2021-06-09 | 2022-04-05 | 湖南大学 | 一种基于模糊匹配的ui元素搜索方法 |
CN114168809A (zh) * | 2021-11-22 | 2022-03-11 | 中核核电运行管理有限公司 | 基于相似度的文档字符串编码匹配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107545071B (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107545071A (zh) | 一种字符串匹配的方法和装置 | |
US10169425B2 (en) | Fast identification of complex strings in a data stream | |
KR100558765B1 (ko) | 적응형 경로 인덱스를 이용한 xml 질의 수행 방법 | |
US7752192B2 (en) | Method and system for indexing and serializing data | |
Wang et al. | An overview of micron's automata processor | |
US20030233346A1 (en) | Full regular expression search of network traffic | |
CN107368346A (zh) | 一种基于元数据和脚本引擎的代码生成方法及装置 | |
US20160092591A1 (en) | Clustering repetitive structure of asynchronous web application content | |
EP1907967A1 (en) | Molecular keyword indexing for chemical structure database storage, searching and retrieval | |
JP4712718B2 (ja) | 配列の生成方法、及び、配列生成プログラム | |
WO2015010509A1 (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
JPH04271443A (ja) | データベース構築方法及び装置 | |
EP3387525A1 (en) | Learning from input patterns in programing-by-example | |
Souravlas et al. | Hybrid CPU-GPU community detection in weighted networks | |
US10977573B1 (en) | Distantly supervised wrapper induction for semi-structured documents | |
CN106682190A (zh) | 标签知识库的构建方法、装置、应用搜索方法和服务器 | |
Chen et al. | Graph unfolding networks | |
CN102214248A (zh) | 一种挖掘海量数据的高空间可伸性和高时间效率的多层频繁模式发现算法 | |
JP2020077236A (ja) | 探索プログラム、探索方法及び探索装置 | |
US7962861B2 (en) | Creating a sentence that describes a walk of a graph | |
CN108304467A (zh) | 用于文本间匹配的方法 | |
Althaus et al. | Graph rewriting based search for molecular structures: definitions, algorithms, hardness | |
US7720807B1 (en) | Representing finite node-labeled trees using a one bit encoding | |
JPH10240741A (ja) | 木構造型データの管理方法 | |
Janruang et al. | Applying semantic suffix net to suffix tree clustering |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |