获取可重复的长度数字

时间:2015-01-08 20:11:26

标签: java regex

我是一个有正则表达式的菜鸟,但我无法找到答案(或者我没有做出正确的研究)。

我有一堆数字,例如17653133062491,我需要在1到9之间得到5个连续数字的组,但是如果我做的话就像[1-9] {5}那样得到17653,62491。我需要什么得到的是17653,76531,65313,53133,62491。

任何提示?

谢谢!

编辑记录:anubhava的答案是正确的。但如果你尝试做这样的事情:

Pattern pattern = Pattern.compile("?=([1-9]{5})");

你会得到一个很好的例外:

java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0

只需添加一个额外的括号并获得组1,如下所示:

Pattern pattern = Pattern.compile("(?=([1-9]{13}))");
Matcher matcher = pattern.matcher(data);        
while(matcher.find()) {
        String match = matcher.group(1);
        .....
}

1 个答案:

答案 0 :(得分:4)

您可以使用lookahead

(?=([1-9]{5}))

RegEx Demo

您将获得此正则表达式的5个匹配项(显示在给定演示链接的 MATCH INFORMATION 中),因为前瞻是零宽度断言。