【发布时间】:2012-08-04 20:21:13
【问题描述】:
有谁知道如何找到某个正则表达式模式的所有可能匹配项的数量?我的意思是这样的:
Calculator_1_([0-1]) 返回 2 个可能的结果,因为它可以匹配两个不同的输入:
-Calculator_1_0
-Calculator_1_1
Calculator_1_([0-2]) 返回 3 个可能的结果,因为它可以匹配三个不同的输入:
-Calculator_1_0
-Calculator_1_1
-Calculator_1_2
Calculator_1_(.*) 返回无限,因为它可以匹配无限输入:
-Calculator_1_0
-Calculator_1_1
-Calculator_1_2
-Calculator_1_3
-Calculator_1_a
...
编辑:顺便说一句,这只是一个例子。
【问题讨论】:
-
在一般情况下,结果将是无限的,所以我不相信有一些开箱即用的功能可以应用。你想用这个来达到什么目的?你能提供一些背景吗?
-
嗯,这是一个非常复杂的程序,但基本上我需要计算机能够从一系列用户生成的正则表达式模式中选择最佳模式。不过,为了做到这一点,我需要知道哪些模式可能匹配的数量最少,因此哪些是最精确的。在我上面的示例中,第一个和第二个模式都将匹配“Calculator_1_0”,但第一个更精确,因为它的匹配量最少。把它想象成一个正则表达式工具。
-
我认为即使是非常微不足道的示例的可能组合也非常复杂,以至于您无法使用简单的算法来预测...
-
+1 表示一个非常有趣的问题,即使(在我看来)该问题本身没有好的解决方案。
-
如果没有目标数据,您无法确定正则表达式将匹配什么。如果数据足够随机或变化多端,那么看似事先有无限命中的数据可能只有一个,反之亦然。对于您的问题,数据和模式耦合太紧密,无法同时回答。
标签: ruby regex pattern-matching