正则表达式中全词的最小 DFA

Minimal DFA for whole-words in regex

在为正则表达式创建 DFA 时,我注意到全词增加了状态的数量,尽管从分析上看,它们看起来与状态较少的正则表达式相似。

例如,对我来说,(a|b)+ 看起来与 (hello|world)+

如果我有一个匹配的字符串,那么 find/replace "hello" 与 "a" 和 "world" 与 "b" 反之亦然。所以我的问题是,为什么 "hello" 和 "world" 不算作单一状态?

因为 DFA 使用更简单的状态定义实现起来非常简单,但代价是拥有更多状态。你的建议很好地描述了你希望 DFA 如何工作,并且与传统的 DFA 有直接的对应关系。但它不允许你再说什么。

它类似于 NFA 的使用:它们更容易设计和(也许)考虑,但没有更多的力量,并且有一个定义明确的算法将它们转换为 DFA(同样,在引入状态的成本)。

将使用单字符转换的 DFA 视为 "machine language" 正则表达式(这与正则表达式不同,学究气)。