【发布时间】:2021-11-22 11:17:57
【问题描述】:
类似私人论坛上的这个问题:Why don’t RegEx implementations support intersection and complement?
从正则表达式构建的有限自动机在集合运算并集、交集、补集和差集下是封闭的。这些 FA 在两个附加操作 concatenation 和 Kleene star 下关闭。
有趣的是,连接、联合和星号操作在正则表达式实现中无处不在。为什么正则表达式引擎通常不支持其他集合操作的交集、补集和差集?
一个示例 FA,演示了来自 these lecture notes 的两个 FA substring 01 和 odd number of 1s 的交集。
斯科特·阿伦森。 6.045J 自动机、可计算性和复杂性。 2011 年春季。麻省理工学院:MIT OpenCourseWare,https://ocw.mit.edu。许可:知识共享 BY-NC-SA。
【问题讨论】:
-
非常感谢@Aaron。我还没有尝试实现环视,所以没有意识到算法是如何工作的。您知道差异操作的任何用例吗?
-
很有道理,感谢您留下有用的 cmets @Aaron。如果您有空闲时间并想将您的 cmets 转换为答案,我很乐意接受。
-
原来猜测是错误的,正则表达式确实起源于学术背景。从长远来看,这应该是给定时间段的默认猜测。
标签: regex state-machine regular-language finite-automata