Java 从类正则表达式描述符创建数字范围

Java 从类正则表达式描述符创建数字范围,java,regex,Java,Regex,我试图创建一个给定正则表达式的数字范围。这与验证数字是否在范围内的大多数问题相反。我将得到正则表达式,需要创建范围 例如,给定正则表达式“80055510[34]X”,我想创建数字8005551030到8005551049。“X”可以是任何东西,它只是最终用户习惯使用的东西(在Cisco Call Manager应用程序中) 给定“80055512[12][12]”,它将创建: 8005551211 8005551212 8005551221 8005551212 给定:“800555120[0

我试图创建一个给定正则表达式的数字范围。这与验证数字是否在范围内的大多数问题相反。我将得到正则表达式,需要创建范围

例如,给定正则表达式“80055510[34]X”,我想创建数字8005551030到8005551049。“X”可以是任何东西,它只是最终用户习惯使用的东西(在Cisco Call Manager应用程序中)

给定“80055512[12][12]”,它将创建:

8005551211 8005551212 8005551221 8005551212

给定:“800555120[0-2,9]”将生成:

8005551200 8005551201 8005551202 8005551209

这是否可以使用正则表达式实现,或者我只需要自己解析东西就可以了


如果有什么不同,我会用Java编写。谢谢。

正则表达式应该用于模式匹配,而不是解析。我猜在您的情况下,您必须想出自己的机制来解析正则表达式。

您当然可以使用正则表达式来解析输入字符串*,例如使用
“\\[(.*?\\]””
来查找出现的,例如
“[0-2,9]”

除此之外,我怀疑java的regexp类(Pattern,Matcher)在这里对您是否有帮助。除非你做一些疯狂的暴力,让java正则表达式“过滤掉”哪些数字是有效的



*如果您不打算支持像
[[4-8]-[3-9]]

这样的奇怪表达式,您需要自己解析它并进行适当的扩展。既然您想要笛卡尔乘积扩展,我会考虑递归处理它。您不应该使用
[1,2]
[0-29]
?你的例子不一致。@aioobe我明白了,但这意味着
[12]
也意味着1或2。那么逗号是必需的、可选的还是输入错误呢?如何生成与给定正则表达式匹配的字符串的问题似乎在堆栈溢出时经常出现。让我帮你谷歌一下;-)谢谢你的其他建议。我确实搜索过,但是我用的不仅仅是这两个词,结果没有那么有用。基于这些链接和这里的答案,看起来我必须自己做些事情。谢谢