我对正则表达式有点菜鸟,但我找不到这个问题的答案(或者我没有做正确的研究)。
我有一堆数字,例如 17653133062491,我需要获取 1 - 9 之间的 5 个连续数字的组,但如果我执行 [1-9]{5} 之类的操作,则会得到 17653, 62491。我需要什么得到的是 17653, 76531, 65313, 53133, 62491。
有什么建议吗?
谢谢!
编辑记录:anubhava 的答案是正确的。但如果你尝试做这样的事情:
Pattern pattern = Pattern.compile("?=([1-9]{5})");
你会得到一个很好的异常(exception):
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);
.....
}
最佳答案
关于java - 按长度获取可以重复的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27848710/