我想知道是否有一种方法可以自动检查正则表达式的歧义。如果存在可以通过正则表达式中的多于一种方式匹配的字符串,则正则表达式被认为是不明确的。例如,给定一个正则表达式 R = (ab)*(a|b)*
,我们可以检测到 R
是一个模棱两可的正则表达式,因为有两种方法可以匹配字符串ab
来自 R.
更新
问题是关于如何检查正则表达式的定义是否模棱两可。我知道在正则表达式机制的实际实现中,总是有一种方法可以匹配正则表达式,但请以学术方式阅读和思考这个问题。
最佳答案
当且仅当对应的 Glushkov 自动机不是确定性的时,正则表达式是单歧的。这可以在线性时间内完成。这里是 a link .顺便说一句,确定性正则表达式也以一明确的名义进行了研究。
关于regex - 检查正则表达式是否不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20604670/