2

有谁知道如何找到某个正则表达式模式的所有可能匹配项的数量?我的意思是这样的:

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
 ...

编辑:顺便说一句,这只是一个例子。

4

1 回答 1

0

任何 Ruby 库(据我所知)都没有内置这样的功能。要正确执行此操作,您需要将正则表达式解析为 pieces,以便能够正确区分(例如):

 /1+/   # Infinite possibilities
 /1\+/  # 1 possibility
 /1\\+/ # Infinite possibilities
 /[1+]/ # 1 possibility

一旦完成,对于任何具有 , 或 限定符的正则表达式,将所有(相关)和限定符转换为精确计数,将所有字符类转换为数字集并展开,这将是一项*相对+{n,}简单?{n,m}[…]工作(乘)a|b交替和(a?b){2,3}分组表达式中的结果。

然而,鉴于目前无法轻松正确地解析正则表达式,这个概念已经死了。我担心,你的想法也是如此。是时候寻找另一种方法来解决您的问题了。

例如,对所有正则表达式使用线程以及块形式scan来并行处理匹配,停止和中止所有进一步的扫描并尽早完成?

于 2012-08-08T03:15:04.607 回答