基于扩展有限状态机的多正则表达式联合搜索方法技术

技术编号:2830999 阅读:642 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种扩展有限状态机,同时还公开了利用该扩展有限状态机实现对多个正则表达式同时进行搜索的方法。该扩展有限状态机增加了状态标识集合、状态转换函数标识集合、状态与状态标识的映射函数、状态转换函数与状态转换函数标识的映射函数等四个参数,通过给状态引入标识,同时给状态转换函数也引入标识,可以使用户无需编写额外例程即可实现高效的多正则表达式的并行搜索,可以保留单个正则表达式的信息,同时还可以有效处理字符串回退。

【技术实现步骤摘要】

本专利技术涉及一种用于实现多正则表达式联合搜索的扩展有限状态 机,也涉及利用该扩展有限状态机实现字符串搜索的方法,属于计算机

技术介绍
随着IT技术的发展,信息量呈爆炸性增长趋势,信息检索占据了越 来越重要的地位。基于正则表达式的搜索方法,由于实现简单、性能高 效,在字符串搜索中得到了广泛应用,并且出现了一大批成熟的支持工 具,grep、 egrep、 awk、 sed等就是其中的典型代表。正则表达式(Regular Expression),又称正规表达式或常规表达式, 常用来描述或匹配一系列符合某个句法规则的字符串。简单地说, 一个 正则表达式是由普通字符(例如字符a到z)以及特殊字符(称为元字符) 组成的文字模式,该模式描述在查找文字主体时待匹配的一个或多个字 符串。正则表达式及后文提及的有限状态机等内容,是计算机领域人员 的公共常识,此处及后文不再赘述。基于正则表达式的搜索方法, 一般先把正则表达式转换成对应的有 限状态机,然后基于有限状态机来完成搜索过程。有限状态机有两种基 本形态不确定性有限状态机(NFA)和确定性有限状态机(DFA)。不确定 性有限状态机M是一个五元式,M=(Q, VtU{e}, S, qO, F),其中,Q 为有穷状态集合,Vt为输入字母表,e为空串,S为状态转换函数,q0 为始态,F为终止状态集。确定性有限状态机M也是一个五元式,M-(Q, Vt, S, q0, F},其中,各个参数的含义与不确定性有限状态机中对应参数 的含义相同。二者的区别在于,NFA可以接受空串e作为输入并且状态转 换函数允许是多值的,DFA不能接受空串e作为输入并且状态转换函数必 须是单值的。不确定性有限状态机和确定性有限状态机的描述能力是等 价的,可以相互转换,转换的方法可以采用现在广泛采用的子集构造算 法。目前流行的基于正则表达式的搜索方法,多以单个正则表达式为处理对象。如果要同时搜索多个正则表达式, 一般有两种处理方法 一种 是对每个子正则表达式分别进行搜索,最后把各次得到的搜索结果合并; 另一种是通过选择运算把这些子正则表达式结合成一个新的正则表达 式,然后对新得到的正则表达式进行搜索。无论采用哪种方法,均存在 一定不足。第一种方法弊病在于扫描遍数过多,速度太慢;第二种方法 搜索速度很快,然而却损失了单个正则表达式的信息,如果不添加额外 处理,通过选择运算后得到的新正则表达式无法区分出组成它的各个子 正则表达式。这种只见森林不见树木的处理方法,在很多场合都是 不方便的。比如,如果不对搜索过程添加特殊处理例程,该方法无法知 道搜索结果到底匹配了哪个子正则表达式。如何高效地并行搜索多个正则表达式,同时又有效保留原有的单个 正则表达式的信息,是字符串搜索中的一个常见问题。实际中,多采用 上述提及的第二种方法,这样可以获得较快的搜索速度,但需要用户手 工编写特别的处理例程,给用户带来了额外的处理负担。字符串搜索另一个常见问题是字符串的回退。例如考虑从字符串 This is a black box中同时搜索black和lack两个正则表 达式,在搜索到了 black之后,必须把匹配的字符串回退到源字符串 中,否则lack就不会得到匹配。在现有技术中,对于单个正则表达 式的回退处理比较容易,只需把已匹配的字符串全部回退到源字符串中, 同时把相应的有限状态机重置到开始状态即可。对于同时搜索多个正则 表达式的回退,处理起来比较复杂,目前多是通过用户编写额外的处理 例程解决,加重了用户的处理负担。
技术实现思路
本专利技术的首要目的在于提供一种用于实现多正则表达式联合搜索的 扩展有限状态机。该扩展有限状态机通过对传统有限状态机的功能扩展, 可以一遍扫描同时搜索多个正则表达式,同时又可以有效保留单个正则 表达式的信息。本专利技术的另外一个目的是提供上述扩展有限状态机实现字符串搜索 的方法。为实现上述的专利技术目的,本专利技术采用下述的技术方案一种用于多正则表达式联合搜索的扩展有限状态机,包括有穷状态 集合、输入字母表、状态转换函数、始态和终止状态集,其特征在于还包括状态标识集合,用于给状态机中的每一个状态加一个标识; 状态与状态标识的映射函数,用于通过该函数计算出一个给定状态 的状态标识;状态转换函数的标识集合,用于给状态机中的每一个状态转换关系都引入一个唯一的标识;状态转换函数与状态转换函数标识的映射函数,用于计算与一条状态转换关系对应的标识。所述扩展有限状态机分为扩展非确定性有限状态机和扩展确定性有限状态机;其中,扩展非确定性有限状态机中的状态转换函数允许是多值的, 扩展确定性有限状态机不接受空串作为输入并且状态转换函数必须是单 值的。一种基于扩展有限状态机的多正则表达式联合搜索方法,其特征在于(1) 构造同时识别多个正则表达式的扩展非确定性有限状态机或扩 展确定性有限状态机;(2) 分配一个足够大的状态转换函数标识空间S,该空间中的每一个 元素用来存放一个状态转换函数标识,用变量flag标识该空间的使用状 况,置flag-O;记当前状态标识集合U= P (q。),其中q。为自动机的始 态;(3) 正向搜索时,每当调用一次状态转换函数δ (p, a)=q,则自动 执行下面三个步骤u=un p (q),S[flag] = w (p, a, q),flag=flag+l,(4) 逆向回退字符时(4. l)如果只沿着某个特定的正则表达式回退,若该正则表达式 的标识为i,执行如下步骤记状态机当前状态为m,若i∈p(m),则可 以回退字符,否则停止回退,若可以回退字符,则査找状态转换函数标 识空间对应的状态转换标识函数ω(p, a, m),然后把字符a回退回输入串中,同时把p设为当前状态,执行flag=flag-l,即flag自动减l,释放标识空间,若继续回退字符,则重复本步骤,否则结束回退;(4. 2)如果不沿着某个特定的正则表达式回退,则执行如下步骤 记状态机当前状态为m,査找状态转换函数标识空间对应的状态转换标识 函数w(p, a, m),然后把字符a回退回输入串中,同时把p设为当前状 态,执行flag=flag-1,若继续回退字符,则重复本步骤,否则结束回 退。所述步骤(l)中,构造同时识别多个正则表达式的扩展非确定性有限 状态机E-NFA包括如下步骤(11) 为多个子正则表达式的每一个分别构造相应的扩展非确定性 有限状态机E-NFA ;(12) 增加一个新的始态s作为E-NFA的始态,从s到(ll)中构造的 各个E-NFAm的始态分别引一条e弧,把s作为E-NFA的始态;增加一个 新的终态e作为E-NFA的终态,从各个E-NFA,的终态分别引入一条e弧 到e;(13) 计算状态集,该状态集为各个E-NFAm的状态集加上步骤(ll)新生成的始态和终态;(14) 计算状态转换函数,各个E-NFl的状态转换关系均为E-NFA中 有效的状态转换函数关系,步骤(11)中新添加的状态转换关系也是E-NFA 中有效的状态转换函数关系;(15) 计算状态标识集合,该集合为各个E-NFl的状态标识集合的合集;(16) 计算状态与状态标识的映射函数,其中E-NFA的始态s的状态 标识为各个E-NFA^的始态的状态标识之和本文档来自技高网
...

【技术保护点】
一种用于多正则表达式联合搜索的扩展有限状态机,包括有穷状态集合、输入字母表、状态转换函数、始态和终止状态集,其特征在于还包括:状态标识集合,用于给状态机中的每一个状态加一个标识;状态与状态标识的映射函数,用于通过该函数计算出一个给定状态的状态标识;状态转换函数的标识集合,用于给状态机中的每一个状态转换关系都引入一个唯一的标识;状态转换函数与状态转换函数标识的映射函数,用于计算与一条状态转换关系对应的标识。

【技术特征摘要】
1.一种用于多正则表达式联合搜索的扩展有限状态机,包括有穷状态集合、输入字母表、状态转换函数、始态和终止状态集,其特征在于还包括状态标识集合,用于给状态机中的每一个状态加一个标识;状态与状态标识的映射函数,用于通过该函数计算出一个给定状态的状态标识;状态转换函数的标识集合,用于给状态机中的每一个状态转换关系都引入一个唯一的标识;状态转换函数与状态转换函数标识的映射函数,用于计算与一条状态转换关系对应的标识。2. 如权利要求l所述的用于多正则表达式联合搜索的扩展有限状态 机,其特征在于所述扩展有限状态机分为扩展非确定性有限状态机和扩展确定性有 限状态机;其中,扩展非确定性有限状态机中的状态转换函数允许是多值的, 扩展确定性有限状态机不接受空串作为输入并且状态转换函数必须是单 值的。3. —种基于扩展有限状态机的多正则表达式联合搜索方法,其特征在于-(1) 构造同时识别多个正则表达式的扩展非确定性有限状态机或扩 展确定性有限状态机;(2) 分配一个足够大的状态转换函数标识空间S,该空间中的每一个 元素用来存放一个状态转换函数标识,用变量flag标识该空间的使用状况,置flag二0;记当前状态标识集合U= P(qn),其中qη为自动机的始态;(3)正向搜索时,每当调用一次状态转换函数δ(p,a)=q,则自动 执行下面三个步骤U=U∩P(q),S[flag] = ω(p, a, q),flag= flag+l , (4)逆向回退字符时(4. l)如果只沿着某个特定的正则表达式回退,若该正则表达式 的标识为i,执行如下步骤记状态机当前状态为m,若iep(m),则可 以回退字符,否则停止回退,若可以回退字符,则査找状态转换函数标 识空间对应的状态转换标识函数co(p, a, m),然后把字符a回退回输入 串中,同时把P设为当前状态,执行flag = flag-1,即flag自动减l, 释放标识空间,若继续回退字符,则重复本步骤,否则结束回退;(4.2)如果不沿着某个特定的正则表达式回退,则执行如下步骤 记状态机当前状态为m,査找状态转换函数标识空间对应的状态转换标识 函数w(p, a, m),然后把字符a回退回输入串中,同时把p设为当前状 态,执行flag=flag-1,若继续回退字符,则重复本步骤,否则结束回 退。4.如权利要求3所述的基于扩展有限状态机的多正则表达式联合搜 索方法,其特征在于-所述步骤(l)中,构造同时识别多个正则表达式的扩展非确定性有限 状态机E-NFA包括如下步骤(11) 为多个子正则表达式的每一个分别构造相应的扩展非确定性 有限状态机E-NFAra;(12) 增加一个新的始态s作为E-NFA的始态,从s到(ll)中构造的 各个E-NFAm的始态分别引一...

【专利技术属性】
技术研发人员:许福李虎金茂忠刘超
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:11[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1