[发明专利]字符串匹配方法和装置在审
申请号: | 201410240320.4 | 申请日: | 2014-05-30 |
公开(公告)号: | CN105468588A | 公开(公告)日: | 2016-04-06 |
发明(设计)人: | 廖勇;文刘飞;朱葛 | 申请(专利权)人: | 华为技术有限公司;电子科技大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 刘芳 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 字符串 匹配 方法 装置 | ||
1.字符串匹配方法,其特征在于,包括:
获取前缀状态自动机,所述前缀状态自动机是由模式字符串的前缀按照多模式字符串匹配算法构成的状态自动机,所述模式字符串为字符串匹配时所用的特征字符串,所述前缀由从所述模式字符串第一个字符开始逐个提取预设值个数的字符组合而成;
获取待匹配字符串,根据所述前缀状态自动机对所述待匹配字符串进行字符串匹配,以便所述字符串匹配成功后中央处理器利用所述模式字符串的后缀对所述待匹配字符串进行第二次字符串匹配。
2.根据权利要求1所述的方法,其特征在于,所述获取前缀状态自动机包括:
从存储器中获取所述前缀状态自动机,所述前缀状态自动机按照稀疏矩阵的方式存储在所述存储器内存中,所述稀疏矩阵中的行表示所述前缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述前缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在所述存储器中存储有匹配列表,所述匹配列表包括所述前缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的前缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的前缀的存储地址。
3.根据权利要求1所述的方法,其特征在于,所述获取待匹配字符串,所述根据所述前缀状态自动机对所述待匹配字符串进行字符串匹配包括:
获取所述待匹配字符串,从所述待匹配字符串的首个字符开始,由至少一个线程将所述待匹配字符串中的每个字符输入到所述前缀状态自动机中,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所述预设值;
当所述待匹配字符串中的每一个字符都在所述前缀状态自动机中完成匹配过程,则生成匹配结果,并将所述匹配结果存储在存储器中。
4.字符串匹配方法,其特征在于,包括:
获取后缀状态自动机,所述后缀状态自动机是由模式字符串的后缀按照多模式字符串匹配算法构成的状态自动机,且所述后缀状态自动机不包括状态回溯,所述模式字符串为字符串匹配时所用的特征字符串,所述后缀的长度为所述模式字符串的长度与预设值的差值;
在图形处理器对所述待匹配字符串进行字符串匹配成功后,获取待匹配字符串,根据所述后缀状态自动机对所述待匹配字符串进行字符串匹配。
5.根据权利要求4所述的方法,其特征在于,在获取所述状态自动机之前,所述方法还包括:
将所述模式字符串拆分为前缀和后缀,所述前缀由从所述模式字符串第一个字符开始逐个提取所述预设值个数的字符组合而成,所述后缀为所述模式字符串减去所述前缀后剩下的部分;
将所述前缀按照多模式字符串匹配算法生成前缀状态自动机并存储于存储器中,将所述后缀按照多模式字符串匹配算法生成后缀状态自动机,并去除所述后缀状态自动机中的状态回溯。
6.根据权利要求5所述方法,其特征在于,所述前缀状态自动机与所述后缀状态自动机按照稀疏矩阵的方式存储在所述存储器中,所述稀疏矩阵中的行表示所述后缀状态自动机的各个状态,所述稀疏矩阵每一列对应一个输入,所述稀疏矩阵中的列表示所述后缀状态自动机接收到每一列对应的输入时状态跳转的下一跳状态,其中-1表示在该行所示的状态下有字符串被成功匹配;
在所述存储器中存储有匹配列表,所述匹配列表包括所述后缀状态自动机的每一个状态以及与每一个状态对应的地址,若其中第一状态对应的地址不为空,则表示在该第一状态下有所述模式字符串的后缀被成功匹配,该第一状态对应的地址为被成功匹配到的所述模式字符串的后缀的存储地址。
7.根据权利要求4所述的方法,其特征在于,所述获取待匹配字符串,根据所述状态自动机对所述待匹配字符串进行字符串匹配包括:
获取所述待匹配字符串,从所述待匹配字符串的第一位置开始,由至少一个线程将所述待匹配字符串中的所述第一位置以后的每个字符输入到所述后缀状态自动机中,所述第一位置为所述前缀在所述待匹配字符串中被成功匹配到的位置,当所使用的线程数量大于1时,每两个线程输入的所述待匹配字符串中相同位置的字符数量等于所有所述后缀中长度的最大值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司;电子科技大学,未经华为技术有限公司;电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410240320.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种活动板房立柱装置
- 下一篇:一种通过拉索增强承载力的拱形波纹钢屋盖