正则表达式——匹配原理
??在固定字符串的处理上,正则表达式的速度是赶不上简单字符串处理的;如果要进行复杂多变得字符串处理,正则表达式的速度则要胜于简单的字符串处理,比如正则表达式 8.1 有穷自动机??正则表达式能迅速进行复杂处理的秘密就在于,它采用了一种特俗的理论模型:有穷自动机(Finite Automata,也叫有穷状态自动机,finite-state machine)。这种机器具备有宪哥状态,可以根据不同的条件在状态之间转移。 ??卖饮料的自动售货机就是一种有穷自动机:假设其中的饮料价格都是整数元,而且只接收5块钱的纸币,根据余额的不同,可能状态有6个:5元、4元、3元、2元、1元、0元。你塞进去5块钱,此时的状态就是“5元”,你点了一罐可乐,花去3元,于是状态切换到“2元”,这时候你按下“退币”,就把剩下的2元退给你,并把状态切换到“0元”,“0元”这个状态也叫做“最终状态”。到此,这一轮状态转移结束,如果你再塞5块钱,就开始新一轮的状态转移。 ??严格说起来,有穷自动机必须满足4个条件:
??我们说自动售货机是一种有穷自动机,就是因为它满足这4个条件:
??自动售货机对应的有穷自动机模型,它包含6个状态,对应余额的6种可能,起始状态是“¥5”,结束状态是“¥0”,梦儿箭头代表一个转移函数(每样商品的价格为1元或者2元,所以么个转义函数上的文字或者是-2),在¥4、¥3、¥2、¥1状态下,都可以自动直接退币,所以有一个转移函数直达最终状态。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |