regex - 将点星正则表达式转换为 NFA

标签 regex algorithm dfa nfa kleene-star

我正在将一组给定的正则表达式转换为单个 NFA,但我遇到了一些问题。我应该如何转换正则表达式,例如“ab.*c”(表示匹配一个“a”、一个“b”、任意数量的字符,然后是一个“c”)?

我的最终目标是将单个 NFA 转换为 DFA(为此我正在使用子集构造算法)。

最佳答案

正则表达式中的 .* 对应于 NFA 中其字母表中每个字母的循环状态。

对于 c,该状态也将转换为接受状态。

在循环转换和接受转换中都有 c 是完全可以的——这就是它不确定的原因。

关于regex - 将点星正则表达式转换为 NFA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10721776/

相关文章:

C++11 正则表达式匹配中的匹配

Javascript 密码不应包含用户的帐户名或用户全名中超过两个连续字符的部分

regular-language - 需要有限自动机的正则表达式 : Even number of 1s and Even number of 0s

php - PHP中正则表达式的疑问

java - MongoDb Spring 在嵌套对象中查找

python - 使用复数遍历二维数组中的邻居

algorithm - DFS 对于有向图而不是 BST 有何意义?

python - 最长的字母子串 - 从哪里开始

regex - 实现词法分析器时 DFA 与正则表达式?

algorithm - 使用无关转换最小化 DFA