有点看不明白你问的是什么。我的理解是你是要截取3641023823933285这个字段的前十位数字,但是你的正则表达式赛选出了2899165811,因为你的正则表达式是寻找连续的10为数字,所以2899165811当然符合要求,如果要截取的字段都是和3641023823933285长度一样的话你的正则表达式的长度应该是16,然后从正则表达式赛选出来的结果中截取前10位。
通过正则表达式直接丢掉较长的数据很难办到,可以在结果中根据字符串长度进行一次判定:
Pattern pattern = Pattern.compile("\"id\":\\d{10,}");
Matcher matcher = pattern.matcher(input);
while(matcher.find()) {
if(matcher.group().length() == 15){
System.out.println(matcher.group());
}
}
你可以找出"id":2899165811,(加逗号)嘛,如果10位数后面没有逗号则不匹配