正则表达式与有限自动机

为什么要学习有限自动机?

不知道各位读者在了解正则表达式的时候有没有产生过这样一个问题:为什么我们必须用正则表达式?有没有代替正则表达式的东西?正则表达式的核心原理是什么?
要解答这个问题,就必须要了解有限自动机,这是正则表达式的核心。

什么是有限自动机?

有限自动机实际上是一个识别器(recognizer),它提供一个状态转移表,即在当前状态下,接受一个新的输入后,系统应该转移到什么状态。用语言描述显得有些晦涩,下面我们来看一个具体的例子。

假定要查找的字符串为P=”ababaca”, 被查找的文本为T=”abababacaba”。一次读入T的一个字符,用S表示当前读入的T的字符。那我们需要做的就是,寻找最长的P的前缀,使其可以构成S的后缀,我们把匹配上的P的前缀长度记作k。于是就能得到下面这个序列。
P = ”ababaca”
T = ”abababacaba”

  1. S= a \color{red}{a} a, k = 1, P[1] a \color{red}{a} ababaca
  2. S= a b \color{red}{ab} ab, k = 2, P[1,2] a b \color{red}{ab} ababaca
  3. S= a b a \color{red}{aba} aba, k = 3, P[1,2,3] a b a \color{red}{aba} ababaca
  4. S= a b a b \color{red}{abab} abab, k= 4, P[1,2,3,4] a b a b \color{red}{abab} ababaca
  5. S= a b a b a \color{red}{ababa} ababa, k = 5, P[1,2,3,4,5] a b a b a \color{red}{ababa} ababaca
  6. S=ab a b a b \color{red}{abab}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值