有没有任何方法可以得到正则表达式模式的所有可能结果
is there any way to get all the possible outcomes of a regular expression pattern?
有什么方法可以获得正则表达式模式的所有可能结果吗?。我看到的所有内容都引用了一个根据字符串进行评估的模式。但我需要的是有一个这样的模式:
^EM1650S(B{1,2}|L{1,2})?$
生成所有可能的匹配:
EM1650S
EM1650SB
EM1650SBB
EM1650SL
EM1650SLL
在一般情况下,没有。在这种情况下,您几乎没有解决方案空间。
在高阶Perl(PDF)和Perl模块中有一节介绍了这一点。我从未在其他任何事情中重新实施过它,但我也遇到了类似的问题,这种解决方案足以满足同样有限的需求。
有一些工具可以显示正则表达式的所有可能匹配项。
以下是用Haskell写的:https://github.com/audreyt/regex-genex这里是一个Perl模块:http://metacpan.org/pod/Regexp::Genex
不幸的是,我找不到任何关于JavaScript 的东西
在这种特殊情况下,是的。正则表达式生成有限数量的有效字符串,因此可以对其进行计数。
您只需要解析正则表达式。其中的某些部分(EM1650S
)是强制性的,所以请考虑其余部分。通过|
(或)符号进行解析。然后枚举它两边的字符串。然后你可以得到它们所有可能的组合。
某些正则表达式(包含*
或+
符号)可以表示无限数量的字符串,因此无法对其进行计数。
从计算理论的角度来看,正则表达式等价于有限状态机。这是"自动机理论"的一部分。你可以创建一个等价于正则表达式的有限状态机,然后使用图遍历算法遍历FSM的所有路径。在一般情况下,可计数的无限数量的字符串可能与正则表达式匹配,因此您的程序可能永远不会根据输入的正则表达式而终止。
相关文章:
- 有可能过滤来自嵌入式YouTube的声音吗
- Livereload for node.js.有可能吗
- 有可能在来自链接的警报中有一个值吗
- 有可能通过sessionID获得快速会话吗
- 正在对已提取的文档进行填充.有可能吗?如果有,怎么做
- 有可能得到一个大整数实例的自然日志吗
- Ajax与jQuery同步.有可能吗
- 如何使一个Math.random数组元素比另一个数组元素更有可能被选中
- 有可能隐藏同行吗;强制转向/继电器时相互IP
- 如何使用javascript从同一浏览器下的其他页面获取URL?有可能吗
- JavaScript在变量中存储操作?有可能吗
- 我有可能防止黑客使用网络控制台用JavaScript重复调用upvote(AJAX)函数吗
- 有可能过滤extjs图表吗
- 有可能将SYSTEMJS与REQUIREJS结合起来吗
- 是否有可能在CSS或JavaScript中瞄准Windows 8模式下的IE10 ?
- 是否有可能让w regexp模式允许诸如é吗?如果不是,还有什么替代方案呢?
- 是否有可能停止关闭Jquery模式弹出页面刷新
- 同步模式下的WebSQL..有可能吗
- 是否有可能找到所有已定义的具有特殊模式的Javascript对象
- 在PHP中是否有可能发现客户端的计算机没有处于睡眠状态或锁定模式?