【发布时间】:2011-02-27 10:06:02
【问题描述】:
如果我有一个正则表达式列表,是否有一种简单的方法可以确定它们中的任何一个都不会返回相同字符串的匹配项?
也就是说,当且仅当对于所有字符串,列表中最多有一项与整个字符串匹配时,列表才有效。
这似乎很难(也许不可能?)明确地证明,但我似乎找不到任何关于这个主题的工作。
我问的原因是我正在开发一个接受正则表达式的标记器,我想确保一次只有一个标记可以匹配输入的头部。
【问题讨论】:
-
我想我误解了。您的意思是两个给定的正则表达式必须与 any 输入字符串完全互斥?即,在 2^32 个可能的四字节字符串中,正则表达式可能只匹配一种可能性?这不就是说:匹配这个确切的字符串吗?
-
我的意思是正则表达式的交集必须为零。没有字符串匹配超过 1 个正则表达式。
-
此外,我应该注意我说的是有效的 c# 正则表达式。
-
那么,恐怕我原来的答案仍然成立(以及吉姆答案的最后一段)。您不能这样做,仅仅是因为这些 C#(它们是 NFA)正则表达式的本质。 (PS:我删除了我的,因为它太糟糕了。去吉姆的)