[发明专利]一种快速进行多字符串匹配的方法有效
申请号: | 201911068908.5 | 申请日: | 2019-11-04 |
公开(公告)号: | CN110825925B | 公开(公告)日: | 2023-05-26 |
发明(设计)人: | 沈华伟 | 申请(专利权)人: | 沈华伟 |
主分类号: | G06F16/903 | 分类号: | G06F16/903 |
代理公司: | 上海思牛达专利代理事务所(特殊普通合伙) 31355 | 代理人: | 雍常明 |
地址: | 116000 辽宁省大连*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 快速 进行 多字 匹配 方法 | ||
本发明公开了一种快速进行多字符串匹配的方法,包括以下步骤,当程序在获取到关键词表之后自动产生并构造一张字符定位表,所述字符定位表的每一行是所述关键词表里各个关键词内所有可能出现的字符,以字典顺序(A~Z,a~z,0~9)保存,第N列是该字符在要进行匹配的关键词中出现在第N位的关键词的编号集合;本申请描述的方法可在随机的字节流里发现关键词表内提及的所有关键词,可使用经典模式匹配算法及其变种KMP算法,其时间复杂度将为O(N2)甚至O(N3),相较于基于自动机的词法分析器方法以及正则表达式方法,有着自动机构造简单,代码编写和维护便捷,生成的程序体积小,编译时间短,效率高等特点。
技术领域
本发明属于多字符串匹配技术领域,具体涉及一种快速进行多字符串匹配的方法。
背景技术
字符串匹配是计算机科学的基本问题,解决字符串匹配问题的方法被广泛引用到文本编辑、搜索引擎、高级程序设计语言编译器当中。
现今解决字符串匹配问题的方法有:经典模式匹配算法及其变种KMP算法;基于自动机的词法分析器算法;基于正则表达式的匹配与提取算法,使用基于自动机的词法分析器方法,存在自动机构造复杂,代码编写和维护困难,生成的程序体积较大等缺点;使用正则表达式方法,当关键词表规模较大时,存在正则表达式编写困难,编译时间长,运行效率低等缺点,本文描述一种不同于上述算法的方法,用以在字符流中快速匹配关键词表内所有词汇并给出匹配结果,并提出一种快速进行多字符串匹配的方法。
发明内容
本发明的目的在于提供一种快速进行多字符串匹配的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种快速进行多字符串匹配的方法,包括以下步骤:
S1、当程序在获取到关键词表之后自动产生并构造一张字符定位表,所述字符定位表的每一行是所述关键词表里各个关键词内所有可能出现的字符,以字典顺序(A~Z,a~z,0~9)保存,第N列是该字符在要进行匹配的关键词中出现在第N位的关键词的编号集合;
S2、程序自左向右逐个扫描输入字符,并执行运算过程。
优选的,所述运算过程包括以下步骤:
(1)、定义候选集合s=();定义临时候选集temp_s=();定义单词内位置指示器idx=0;定义输入字符串中,各个单词之间的分隔符为空白符(ASCII0x20);
(2)、从输入流中读取一个字符,针对该字符,执行以下运算,若:
该字符为分隔符,执行运算步骤(3);
该字符为非分隔符,执行运算步骤(4);
该字符为输入串末尾(0x00),完成运算,退出匹配程序;
(3)、针对候选集s的情况,分别进行以下运算,若:
候选集s为空集合,匹配失败,将临时候选集temp_s重置为空集合,单词内位置指示器idx重置为0,连续读取输入字符直到读取到分隔符,执行运算步骤(2);
候选集s为非空集合,查找s中保存的关键词编号所对应的关键词中,是否存在一个关键词w,其长度与当前的单词内位置指示器idx的值相等。所存在,则匹配成功,匹配到关键词w,将临时候选集temp_s重置为空集合,单词内位置指示器idx重置为0,执行运算步骤(2);若s中保存的关键词编号所对应的关键词中,不存在这样一个关键词,其长度与当前的单词内位置指示器idx的值相等,则匹配失败。连续读取输入字符直到读取到分隔符,将候选集s与临时候选集temp_s全部重置为空集合,单词内位置指示器idx重置为0,执行运算步骤(2);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于沈华伟,未经沈华伟许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911068908.5/2.html,转载请声明来源钻瓜专利网。