regex - 检查正则表达式是否不明确

标签 regex regular-language

我想知道是否有一种方法可以自动检查正则表达式的歧义。如果存在可以通过正则表达式中的多于一种方式匹配的字符串,则正则表达式被认为是不明确的。例如,给定一个正则表达式 R = (ab)*(a|b)*,我们可以检测到 R 是一个模棱两可的正则表达式,因为有两种方法可以匹配字符串ab 来自 R.

更新

问题是关于如何检查正则表达式的定义是否模棱两可。我知道在正则表达式机制的实际实现中,总是有一种方法可以匹配正则表达式,但请以学术方式阅读和思考这个问题。

最佳答案

当且仅当对应的 Glushkov 自动机不是确定性的时,正则表达式是单歧的。这可以在线性时间内完成。这里是 a link .顺便说一句,确定性正则表达式也以一明确的名义进行了研究。

关于regex - 检查正则表达式是否不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20604670/

相关文章:

regular-language - 如果 L* 是正则的,那么 L 是正则的吗?

c# - 亵渎正则表达式不起作用

JavaScript 括号正则表达式

javascript - 如何根据正则表达式中的条件搜索字符串

regex - 可以使用正则表达式识别任何上下文无关语言吗?

computer-science - 以下常规语言的最小泵送长度

至少一个字母的正则表达式,不应允许 dot(.)

Ruby Regex 从电子邮件地址中提取域

python - 根据需要在字符串之间添加文本

Java - 如何验证不允许的字符?