我是一个有正则表达式的菜鸟,但我无法找到答案(或者我没有做出正确的研究)。
我有一堆数字,例如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);
.....
}
答案 0 :(得分:4)
您可以使用lookahead:
(?=([1-9]{5}))
您将获得此正则表达式的5个匹配项(显示在给定演示链接的 MATCH INFORMATION 中),因为前瞻是零宽度断言。