我正在尝试使用正则表达式创建一个数字范围。这与尝试验证数字是否在范围内的大多数问题相反。我将获得正则表达式并需要创建范围。
例如,给定正则表达式“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 :(得分:1)
您当然可以使用正则表达式解析输入字符串 * ,使用说"\\[(.*?)\\]"
来查找例如"[0-2,9]"
的出现次数
除此之外,我怀疑java的regexp类(Pattern,Matcher)对你有什么帮助。除非你做一些疯狂的蛮力,让java-regexp“过滤掉”哪些数字有效。
* 如果您不打算支持[[4-8]-[3-9]]
之类的奇怪表达。
答案 1 :(得分:0)
正则表达式应该用于模式匹配,而不是解析。我想在你的情况下,你必须提出自己的机制来解析正则表达式。