【发布时间】:2015-01-14 16:39:45
【问题描述】:
假设两个正则表达式e1和e2冲突如果存在任何字符串s,那么e1和e2都匹配s。 p>
是否有任何简单(有效)的方法来检查两个正则表达式是否发生冲突,而无需遍历我们字典中所有可能字符串的集合?
注1:我不知道这在文献中是否以其他方式称为。也许我只是缺少正确的名称来搜索这个。
注意 2: 对我来说理想的答案是编写 PHP 代码,但我接受任何建议,不一定是 PHP。
【问题讨论】:
-
一般来说,这是一个公平的赌注,因为您无法测试构成字符串的每个字符组合,因此您无法比较两个正则表达式来查看它们是否匹配相同的字符串。我说一般是因为正则表达式可能几乎相同,或者范围很广,可以在视觉上发现它。
-
很抱歉,我没有看到任何重复。使用 AND 运算符需要遍历整个字符串字典,并且问题明确要求不要这样做。
-
如果你在只匹配一个正则表达式的地方实现了一些东西,如果有匹配,检查你的另一个正则表达式。您可以遍历您的字典,仅检查其中一个,直到您成功为止,而不是检查所有内容都针对这两种模式。
-
我不确定你能做到这样的事情。假设
e1 = /[a-z]/和e2 = /[0-9]/它们都匹配s = 'a1'但你不能说e1 matches same thing that e2
标签: php regex optimization preg-match