小白java正则表达式遇到问题,求助啊。 本帖最后由 prog_C 于 2013-04-24 09:23:42 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是一段json串,用正则来解析应该是不合适的。http://bbs.csdn.net/topics/390331957这是解析json串的帖子,楼主一定要用正则的话,其实你的那个正则匹配式效率是相当的低的。另外楼主的匹配式子可以加一个开头和结束标记再试试 最简单的方式split(",")后,找到id之类的数据再split(":") final String friendList = "var friends=[{\"id\":422727123,\"vip\":false,\"selected\":true,\"mo\":false,\"name\":\"\u9648\u671b\u6797\",\"head\":\"http:\\/\\/hdn.xnimg.cn\\/photos\\/hdn121\\/20111020\\/2120\\/tiny_dfoU_59555d019117.jpg\",\"groups\":[]},{\"id\":123456789,\"vip\":false,\"selected\":false,\"mo\":false,\"name\":\"\u9648\u76ca\u714c\",\"head\":\"http:\\/\\/hdn.xnimg.cn\\/photos\\/hdn121\\/20130423\\/0105\\/tiny_Vhoj_f8eb00022ee4111a.jpg\",\"groups\":[]}];"; final String regex = "\"id\":(\\d{9}),\"vip\":.*?\"name\":\"(.*?)\",\"head\":\"(.*?.jpg)\",\""; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(friendList); int i; while(matcher.find()) { System.out.println("GroupCount : "+ matcher.groupCount()); System.out.println("Start : "+matcher.start()); System.out.println("End : "+matcher.end()); for(i = 0;i<=matcher.groupCount();i++) { System.out.println(matcher.group(i)); } }把你所有的.*都改成.*?就行了.贪婪匹配改成非贪婪 Java编写杨辉三角程序问题,请高手帮忙解答... 从数组里获得随机数的问题 java显示tif格式图像问题 消息传递问题 有关JAVA对话框的问题 如何实现报表打印的问题 真郁闷,散分 发过2次帖子,都没有了,再发。JAVA中SOCKET通信中的数据压缩问题 一个傻比问题 在CORBA编程中(书上例子),当我用IDLTOJAVA时,无论如何编译不通过,请高手帮忙…… 想问下关于以后的学习个方向,求解释。谢谢。 FileDialog如何设置默认文件名?
http://bbs.csdn.net/topics/390331957
这是解析json串的帖子,
楼主一定要用正则的话,其实你的那个正则匹配式效率是相当的低的。
另外楼主的匹配式子可以加一个开头和结束标记再试试
final String friendList = "var friends=[{\"id\":422727123,\"vip\":false,\"selected\":true,\"mo\":false,\"name\":\"\u9648\u671b\u6797\",\"head\":\"http:\\/\\/hdn.xnimg.cn\\/photos\\/hdn121\\/20111020\\/2120\\/tiny_dfoU_59555d019117.jpg\",\"groups\":[]},{\"id\":123456789,\"vip\":false,\"selected\":false,\"mo\":false,\"name\":\"\u9648\u76ca\u714c\",\"head\":\"http:\\/\\/hdn.xnimg.cn\\/photos\\/hdn121\\/20130423\\/0105\\/tiny_Vhoj_f8eb00022ee4111a.jpg\",\"groups\":[]}];";
final String regex = "\"id\":(\\d{9}),\"vip\":.*?\"name\":\"(.*?)\",\"head\":\"(.*?.jpg)\",\"";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(friendList);
int i;
while(matcher.find())
{
System.out.println("GroupCount : "+ matcher.groupCount());
System.out.println("Start : "+matcher.start());
System.out.println("End : "+matcher.end());
for(i = 0;i<=matcher.groupCount();i++)
{
System.out.println(matcher.group(i));
}
}
把你所有的.*都改成.*?就行了.
贪婪匹配改成非贪婪