[发明专利]基于有限状态自动机的字符串匹配方法及内容过滤设备无效
申请号: | 200910226279.4 | 申请日: | 2009-11-27 |
公开(公告)号: | CN101876986A | 公开(公告)日: | 2010-11-03 |
发明(设计)人: | 黄凯明 | 申请(专利权)人: | 福建星网锐捷网络有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 郭润湘 |
地址: | 350002 福建省福州市仓*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 有限 状态 自动机 字符串 匹配 方法 内容 过滤 设备 | ||
1.一种基于有限状态自动机DFA的字符串匹配方法,其特征在于,包括:将所述DFA中符合设定条件的至少两个顺序关联的状态中包含的状态跳转情况不相同的特定字符组成匹配字符串,得到至少一个状态为匹配字符串后跳转的合并后的DFA;当基于所述合并后的DFA进行字符匹配时,执行下列步骤:
从字符串数据库中依次读取字符,根据当前状态及本次读取的字符,判断本次匹配是否为字符串匹配;
若否,则根据所述当前状态和读取的字符跳转到下一状态;
若是,则从对应的字符串存储地址获取当前状态的所述匹配字符串,并从所述字符串数据库中读取下一个字符,判断读取的下一个字符是否与所述匹配字符串的下一个字符匹配,若是,则继续从所述字符串数据库中读取下一个字符字符进行判断,直至字符串匹配成功时,跳转到当前状态和所述匹配字符串所对应的下一状态;若否,则根据所述当前状态和读取的字符跳转到下一状态。
2.如权利要求1所述的方法,其特征在于,所述根据当前状态及本次所读取的字符,判断本次匹配是否为字符串匹配,具体包括:
根据当前状态和本次读取的字符,确定出对应的跳转状态的状态序号;
比较确定出的状态序号是否大于状态合并后的DFA中当前状态的最大状态序号,当大于时,确定本次匹配为字符串匹配;否则,确定本次匹配不是字符串匹配。
3.如权利要求2所述的方法,其特征在于,所述合并后的DFA以一维数组的形式存放;
每个当前状态在输入字符后所对应的跳转状态的存储位置,根据该当前状态的状态序号和输入字符所对应的十进制值确定。
4.如权利要求3所述的方法,其特征在于,根据当前状态和本次读取的字符,确定对应的跳转状态的状态序号,具体包括:
根据当前状态及本次所读取的字符的十进制值,计算得到对应的跳转状态在一维数组中的存储位置;
从确定出的存储位置读取所述对应的跳转状态的状态序号。
5.如权利要求4所述的方法,其特征在于,所述计算得到对应的跳转状态的存储位置,具体为:
计算当前状态的状态序号与256的乘积,计算所述乘积与本次输入字符所对应的十进制值之和,得到对应的跳转状态存储位置在一位数组中的存储位置。
6.如权利要求1-5任一所述的方法,其特征在于,所述匹配字符串存储在一个一维数组中;
当需要读取字符串时,根据当前状态的状态序号确定当前状态的所述匹配字符串存储位置,从存储匹配字符串的一位数组中对应的字符串存储位置读取存储的该匹配字符串。
7.一种基于有限状态自动机DFA的字符串匹配装置,其特征在于,包括:
生成模块,用于将所述DFA中符合设定条件的至少两个顺序关联的状态中包含的状态跳转情况不相同的特定字符组成匹配字符串,得到至少一个状态为匹配字符串后跳转的合并后的DFA;
判断模块,用于从字符串数据库中依次读取字符,基于所述合并后的DFA根据当前状态及本次读取的字符,判断本次匹配是否为字符串匹配;若是,通知所述第一执行模块;若否,通知所述第二执行模块;
第一执行模块,用于从对应的字符串存储地址获取当前状态的所述匹配字符串,并从所述字符串数据库中读取下一个字符,判断读取的下一个字符是否与所述匹配字符串的下一个字符匹配,若是,则继续从所述字符串数据库中读取下一个字符字符进行判断,直至字符串匹配成功时,跳转到当前状态和所述匹配字符串所对应的下一状态;若否,则通知所述第二执行模块;
第二执行模块,用于根据所述当前状态和读取的字符跳转到下一状态。
8.如权利要求7所述的装置,其特征在于,所述判断模块,具体包括:
第一读取单元,用于从字符串数据库中依次读取字符;
确定单元,用于根据当前状态和所述第一读取单元本次读取的字符,确定出对应的跳转状态的状态序号;
第一判断单元,用于比较确定出的状态序号是否大于状态合并后的DFA中当前状态的最大状态序号;当大于时,确定本次匹配为字符串匹配并通知所述第一执行模块;否则,确定本次匹配不是字符串匹配并通知所述第二执行模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建星网锐捷网络有限公司,未经福建星网锐捷网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910226279.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种地基数字云图的纹理特征抽取和检索方法
- 下一篇:一种网站导航系统及方法