您现在的位置: 爱51代码网 >> 范文 >> 文章正文
正则表达式如何解析JSON

正则表达式如何解析JSON

本人需要将JSON中的键值对,用正则分组,一组一组的拿出来.请高手指点:

这是我要解析的JSON
{"username":"zs","password":"123123","phone":"13612345678"}

网上查了查,解析第一对键值,有人用如下正则表达式:

.*"username":"([^"]+)".*

我有两个疑问:
1)()里面是分组么?它运行结果为什么只得到"zs",运行结果请参考附图
2)我如何获得第二对,第三对呢?我试过了.*"password":"([^"]+)".*  输出仍然是zs

注意,如果逗号在“”之间你的正则会有问题

public static void main(String[] args) throws Exception {         String str = "{\"username\":\"zs\",\"password\":\"123123\",\"phone\":\"13612345678\"}";         Matcher m =Pattern.compile("\"(.*?)\":\"(.*?)\"").matcher(str);         while(m.find()){             System.out.println(m.group(1)+"="+m.group(2));         }     }

JSON 是具有语义结构的数据,含有不定层次的嵌套结构,正则表达式无法处理带有未定层次嵌套结构的数据(.Net 中的正则表达式平衡组语法可以支持)。

建议使用 JSON 解析工具,比如:fastjson、jackson、Gson 等等都是很好用的工具。

毕竟正则表达式是模式匹配工具,而不是语法解析工具。 这个表达式简直不堪一击,如果 "username" 的前后多个空格呢?如果“:”前后也有空格呢? 解析第二个password
.*"password":"(\\w+)",.*
获取的时候得到group(1)的值
转义符号没填,填上转义符号后应该可以用。。
当然,json串有专门的解析工具,干嘛非得用正则呢,当然如果只是当学习正则的话还是不错的

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    Ajax异步调用后台 实现简单的
    定时将SQL SERVER2000中一个
    Exception in thread "Timer
    Exception sending context 
    Eclipse下启动tomcat报错:/
    Java通过IP地址获取用户所在
    struts2+hibernate 实现B2C电
    android编译时出现'Unab
    Android 仿 WP7 布局
    windows下搭建SVN服务器及配
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |