有没有办法检查两个正则表达式是否可以匹配相同的字符串?

时间:2013-02-10 12:58:43

标签: algorithm

我有两个正则表达式。我需要确定是否可以构建与这两个正则表达式同时匹配的给定长度的字符串。我需要算法才能做到这一点。

字符串的长度不超过20个字符。

1 个答案:

答案 0 :(得分:4)

这取决于。对于perl兼容的正则表达式(pcre),这通常是不可能的,因为它们是完整的:你甚至不能确定匹配总是终止。

对于Chomsky等级中定义的原始的“干净”形式的调节器语言,众所周知它们在交叉点下是封闭的,这在this thread已经讨论过。

只要交叉点有NFA,就很容易检查是否有任何字符串匹配 - 如果thera是从NFA的开头到结尾的路径,那么此路径的字符串是您要搜索的字符串,对于DFA,算法是here,应该很容易使其适应NFA。