【发布时间】:2012-11-21 05:52:56
【问题描述】:
出于测试目的,我想枚举 Java 中有限正则表达式的所有可能值。
在某些情况下,我有一个正则表达式,用于匹配单词中允许的颜色值。以下是它的一个简化版本作为示例:
(white|black)|((light|dark) )?(red|green|blue|gray)
我想创建一个单元测试来枚举所有这些值并将它们中的每一个传递给我的实用程序类,该类会从这些生成一个Color 对象,这样如果我更改正则表达式,我的单元测试将失败,如果发生错误(即不支持新的颜色值)。
当然,我知道枚举是可能的 (see this question),但是是否有一个现有的 Java 库可以枚举正则表达式的所有可能匹配项?
编辑:我已经实现了一个库来执行此操作。请参阅下面的链接以获取我的答案。
【问题讨论】:
-
您想要所有无限数量的可能匹配项(带有不同数量的空格),还是只需要有限数量的匹配项?
-
你说
finite regular expression,我想你的意思是regular expression that describes a finite language。请注意,在这种情况下,您的正则表达式不是“有限的”。它包含一个+。 -
@m.buettner 啊,确实如此。我想我将不得不删除加号。哦,好吧,反正我不喜欢它。
-
重新打开这个问题。链接的副本用于随机匹配生成,而不是所有可能匹配的生成。
-
你需要这样的东西:regldg.com/docs/index.php 但我还没有看到 java impl
标签: java regex enumeration