编程语言
首页 > 编程语言> > python – 将正则表达式转换为有限状态机

python – 将正则表达式转换为有限状态机

作者:互联网

你会在算法上提示将任何正则表达式转换为有限状态机吗?例如,解析正则表达式并将状态适当地添加到fsm的算法?任何参考或更深层的想法?

我用Python写这个

感谢致敬

解决方法:

使用Michael Sipser的Introduction to the Theory of Computation.第1章给出了将正则表达式转换为确定性或非确定性有限状态自动机(DFA或NFA)的详细算法,在证明它们的等价性的背景下(DFA,NFA和正则表达式可以匹配完全相同的字符串类别).

一般的想法是:将正则表达式转换为NFA,这可以非常直接地完成(*是循环,|和字符范围是分支点).然后,您将NFA转换为(更大)DFA,这涉及为每组备用NFA状态创建一个DFA状态. DFA最多具有与NFA状态集的幂集一样多的状态(例如,具有3个状态的NFA可以转换为具有最多2 ^ 3 = 8个状态的DFA),并且可以识别任何目标字符串而无需回溯.阅读本书了解详情.

标签:python,regex,fsm,state-machine
来源: https://codeday.me/bug/20190613/1232606.html