java 正则表达式 如何匹配固定长度的数字

我要在下面的数据中找出名字为id,长度为10的数字串。{"comments":[{"created_at":"MonNov0421:19:49+08002013","id... 我要在下面的数据中找出名字为id,长度为10的数字串。
{"comments":[{"created_at":"Mon Nov 04 21:19:49 +0800 2013","id":3641023823933285,"text":"太可爱了","source":"<a href=\"http://app.weibo.com/t/feed/qsbvs\" rel=\"nofollow\">手机微博触屏版</a>","user":{"id":2899165811,"idstr":"2899165811","class":1,"screen_name":‘’haha‘}

即要找出"id":2899165811
我用的正则表达式是 "\"id\":([0-9]d{10})"
但是结果显示的有3641023823和2899165811。也就是把"id":3641023823933285中前10个数留下了。
想问如何才能直接丢掉"id":3641023823933285?
求助啊~~~
展开
 我来答
匿名用户
2013-11-07
展开全部
有点看不明白你问的是什么。我的理解是你是要截取3641023823933285这个字段的前十位数字,但是你的正则表达式赛选出了2899165811,因为你的正则表达式是寻找连续的10为数字,所以2899165811当然符合要求,如果要截取的字段都是和3641023823933285长度一样的话你的正则表达式的长度应该是16,然后从正则表达式赛选出来的结果中截取前10位。
追问
好吧,我的意思是只要连续的十位数字,但是结果却把3641023823933285的前十位也给我了。
不过还是很感谢你~~~
追答
Pattern pattern = Pattern.compile("\"id\":\\d{10},"); 
Matcher matcher = pattern.matcher(value);
while(matcher.find()) {
String findValue=matcher.group();
System.out.println(findValue);
System.out.println(findValue.substring(0, findValue.length()-1));
}
darkads2012
2013-11-07 · TA获得超过577个赞
知道小有建树答主
回答量:295
采纳率:0%
帮助的人:318万
展开全部
通过正则表达式直接丢掉较长的数据很难办到,可以在结果中根据字符串长度进行一次判定:
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());
}
}
追问
试了一下,还是不行。不过同样感谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fangfangs1217
2013-11-07 · TA获得超过116个赞
知道答主
回答量:55
采纳率:0%
帮助的人:33.1万
展开全部
你可以找出"id":2899165811,(加逗号)嘛,如果10位数后面没有逗号则不匹配
追问
但是如何才能在打印时不打出逗号呢?数据太多了,没法手动删除呀。
追答
substring截取一下,结果不是类似"id":2899165811,这种固定格式嘛,长度16位,截取到15位OK了呀substring(15)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式