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?
求助啊~~~ 展开
{"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));
}
展开全部
通过正则表达式直接丢掉较长的数据很难办到,可以在结果中根据字符串长度进行一次判定:
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());
}
}
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位数后面没有逗号则不匹配
追问
但是如何才能在打印时不打出逗号呢?数据太多了,没法手动删除呀。
追答
substring截取一下,结果不是类似"id":2899165811,这种固定格式嘛,长度16位,截取到15位OK了呀substring(15)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询