码迷,mamicode.com
首页 > 编程语言 > 详细

java使用正则表达式的方法从json串儿,取想要的value值

时间:2020-12-05 10:33:25      阅读:6      评论:0      收藏:0      [点我收藏+]

标签:文章   str   微信   long   正则表达   表达式   json   system   lag   

java使用正则表达式的方法从json串儿,取想要的value值

例子1:

现有json:
({"code":"200","json":["111"],"message":"true"})
从中提取json的value数据。
直接上代码如下:

import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Snippet {
    public static void main(String[] args) {
        ArrayList json = new ArrayList();
        json.add("111");
        User user = new User();
        user.setJson(json);
        user.setCode("200");
        user.setMessage("true");
        String string = "(" + JSON.toJSONString(user) + ")";
        // String regex = "\"json\":(.*?),\"message\"";// 使用非贪婪模式!
        Pattern pattern = Pattern.compile("\\[\"(.*?)\"\\]");
        Matcher matcher = pattern.matcher(string);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

例子2:


String str = "我是[001]真心求救的[002],你能帮帮我吗";

        Pattern pattern = Pattern.compile("\\[(.*?)\\]");

        Matcher matcher = pattern.matcher(str);

        while(matcher.find()){

            System.out.println(matcher.group(1));

        }

例子3:

public static void main(String[] args) {

String
parse="[{CSTM_NO:\"11118\",CSTM_NAME:\"广东XX电力有限公司\",FIX_GNL:\"111810158\",FIX_ACC:\"D201306070003\",OP_FLAG:\"正常\",BUSS_KIND_NAME:\"三个月定期存款\",BAL:\"25,178,750.00\",AVAL_BAL:\"25,178,750.00\",OP_DATE:\"2013-06-07\",DUE_DATE:\"2013-12-07\",ROWNUM_:1,idx:0},{CSTM_NO:\"11118\",CSTM_NAME:\"广东XX电力有限公司\",FIX_GNL:\"111810158\",FIX_ACC:\"D201306070002\",OP_FLAG:\"正常\",BUSS_KIND_NAME:\"三个月定期存款\",BAL:\"25,178,750.00\",AVAL_BAL:\"25,178,750.00\",OP_DATE:\"2013-06-07\",DUE_DATE:\"2013-12-07\",ROWNUM_:3,idx:2},{CSTM_NO:\"11118\",CSTM_NAME:\"广东XX电力有限公司\",FIX_GNL:\"111810158\",FIX_ACC:\"D201306070005\",OP_FLAG:\"正常\",BUSS_KIND_NAME:\"三个月定期存款\",BAL:\"25,178,750.00\",AVAL_BAL:\"25,178,750.00\",OP_DATE:\"2013-06-07\",DUE_DATE:\"2013-12-07\",ROWNUM_:4,idx:3}]";

String regex="FIX_ACC:(.*?),OP_FLAG";//别忘了使用非贪婪模式!

Matcher matcher=Pattern.compile(regex).matcher(parse);

while(matcher.find())

{

 String ret=matcher.group(1);

  System.out.println(ret);

}

}

总结:(.*?)这个拿出来,左边括号左边是左边界,右边括号右边是右边界,选对后直接匹配,即可拿到

EOF

本文作者:久曲建的测试窝
本文链接:https://www.cnblogs.com/longronglang/p/6414087.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
优秀不够,你是否无可替代

软件测试交流QQ群:721256703,期待你的加入!!

欢迎关注我的微信公众号:软件测试君
技术图片

java使用正则表达式的方法从json串儿,取想要的value值

标签:文章   str   微信   long   正则表达   表达式   json   system   lag   

原文地址:https://blog.51cto.com/15009374/2557536

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!