[发明专利]用于多正则表达式联合搜索的扩展有限状态机及搜索方法无效
| 申请号: | 200610114313.5 | 申请日: | 2006-11-03 |
| 公开(公告)号: | CN101174261A | 公开(公告)日: | 2008-05-07 |
| 发明(设计)人: | 许福;李虎;金茂忠;刘超 | 申请(专利权)人: | 北京航空航天大学 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 北京北新智诚知识产权代理有限公司 | 代理人: | 陈曦 |
| 地址: | 100083*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 正则 表达式 联合 搜索 扩展 有限状态机 方法 | ||
技术领域
本发明涉及一种用于实现多正则表达式联合搜索的扩展有限状态机,也涉及利用该扩展有限状态机实现字符串搜索的方法,属于计算机技术领域。
背景技术
随着IT技术的发展,信息量呈爆炸性增长趋势,信息检索占据了越来越重要的地位。基于正则表达式的搜索方法,由于实现简单、性能高效,在字符串搜索中得到了广泛应用,并且出现了一大批成熟的支持工具,grep、egrep、awk、sed等就是其中的典型代表。
正则表达式(Regular Expression),又称正规表达式或常规表达式,常用来描述或匹配一系列符合某个句法规则的字符串。简单地说,一个正则表达式是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式,该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式及后文提及的有限状态机等内容,是计算机领域人员的公共常识,此处及后文不再赘述。
基于正则表达式的搜索方法,一般先把正则表达式转换成对应的有限状态机,然后基于有限状态机来完成搜索过程。有限状态机有两种基本形态:不确定性有限状态机(NFA)和确定性有限状态机(DFA)。不确定性有限状态机M是一个五元式,M=(Q,Vt∪{ε},δ,q0,F),其中,Q为有穷状态集合,Vt为输入字母表,ε为空串,δ为状态转换函数,q0为始态,F为终止状态集。确定性有限状态机M也是一个五元式,M={Q,Vt,δ,q0,F},其中,各个参数的含义与不确定性有限状态机中对应参数的含义相同。二者的区别在于,NFA可以接受空串ε作为输入并且状态转换函数允许是多值的,DFA不能接受空串ε作为输入并且状态转换函数必须是单值的。不确定性有限状态机和确定性有限状态机的描述能力是等价的,可以相互转换,转换的方法可以采用现在广泛采用的子集构造算法。
目前流行的基于正则表达式的搜索方法,多以单个正则表达式为处理对象。如果要同时搜索多个正则表达式,一般有两种处理方法:一种是对每个子正则表达式分别进行搜索,最后把各次得到的搜索结果合并;另一种是通过选择运算把这些子正则表达式结合成一个新的正则表达式,然后对新得到的正则表达式进行搜索。无论采用哪种方法,均存在一定不足。第一种方法弊病在于扫描遍数过多,速度太慢;第二种方法搜索速度很快,然而却损失了单个正则表达式的信息,如果不添加额外处理,通过选择运算后得到的新正则表达式无法区分出组成它的各个子正则表达式。这种“只见森林不见树木”的处理方法,在很多场合都是不方便的。比如,如果不对搜索过程添加特殊处理例程,该方法无法知道搜索结果到底匹配了哪个子正则表达式。
如何高效地并行搜索多个正则表达式,同时又有效保留原有的单个正则表达式的信息,是字符串搜索中的一个常见问题。实际中,多采用上述提及的第二种方法,这样可以获得较快的搜索速度,但需要用户手工编写特别的处理例程,给用户带来了额外的处理负担。
字符串搜索另一个常见问题是字符串的回退。例如考虑从字符串“This is a black box”中同时搜索“black”和“lack”两个正则表达式,在搜索到了“black”之后,必须把匹配的字符串回退到源字符串中,否则“lack”就不会得到匹配。在现有技术中,对于单个正则表达式的回退处理比较容易,只需把已匹配的字符串全部回退到源字符串中,同时把相应的有限状态机重置到开始状态即可。对于同时搜索多个正则表达式的回退,处理起来比较复杂,目前多是通过用户编写额外的处理例程解决,加重了用户的处理负担。
发明内容
本发明的首要目的在于提供一种用于实现多正则表达式联合搜索的扩展有限状态机。该扩展有限状态机通过对传统有限状态机的功能扩展,可以一遍扫描同时搜索多个正则表达式,同时又可以有效保留单个正则表达式的信息。
本发明的另外一个目的是提供上述扩展有限状态机实现字符串搜索的方法。
为实现上述的发明目的,本发明采用下述的技术方案:
一种用于多正则表达式联合搜索的扩展有限状态机,包括有穷状态集合、输入字母表、状态转换函数、始态和终止状态集,其特征在于还包括:
状态标识集合,用于给状态机中的每一个状态加一个标识;
状态与状态标识的映射函数,用于通过该函数计算出一个给定状态的状态标识;
状态转换函数的标识集合,用于给状态机中的每一个状态转换关系都引入一个唯一的标识;
状态转换函数与状态转换函数标识的映射函数,用于计算与一条状态转换关系对应的标识。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200610114313.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种电视机频道收藏方法和电视机
- 下一篇:燃料电池系统及其模组





