`

正则匹配json数据

阅读更多
正则匹配json数据 属性



  
     public static void main(String[] args) {
  //  String json="{\"body\":{\"data\":{\"phoneticSpelling\":\"4148596365299634756\"},\"errno\":0,\"qqaa\":\"success\",\"failMsg\":\"饿了么004门店编码不存在\"},\"cmd\":\"resp.order.create\",\"sign\":\"MD5:4c9f9a797aec3a63b3b7c1b17953fdee\",\"source\":\"47121860\",\"ticket\":\"701439a9-b9c6-491c-a915-9ecb7d3a1202\",\"timestamp\":1650753613,\"version\":\"3\"}";
   // String json="\"{\\\"body\\\":{\\\"data\\\":{\\\"source_order_id\\\":\\\"4537167234017566453juː\\\"},\\\"errno\\\":0,\\\"error\\\":\\\"success\\\",\\\"failMsg\\\":\\\"饿了么订单号4537167234017566453已存在\\\"},\\\"cmd\\\":\\\"resp.order.create\\\",\\\"sign\\\":\\\"juː\\\",\\\"source\\\":\\\"47121860\\\",\\\"ticket\\\":\\\"dd368296-7321-4cc1-bba8-e271962f7b82\\\",\\\"timestamp\\\":1650766806,\\\"version\\\":\\\"3\\\"}\"";
  
    	 String json="{\n" + 
    	 		"    \"id\": \"you\",\n" + 
    	 		"    \"metadata\": {\n" + 
    	 		"        \"operation\": \"retrieve\",\n" + 
    	 		"        \"provider\": \"Oxford University Press\",\n" + 
    	 		"        \"schema\": \"RetrieveEntry\"\n" + 
    	 		"    },\n" + 
    	 		"    \"results\": [\n" + 
    	 		"        {\n" + 
    	 		"            \"id\": \"you\",\n" + 
    	 		"            \"language\": \"en-gb\",\n" + 
    	 		"            \"lexicalEntries\": [\n" + 
    	 		"                {\n" + 
    	 		"                    \"entries\": [\n" + 
    	 		"                        {\n" + 
    	 		"                            \"pronunciations\": [\n" + 
    	 		"                                {\n" + 
    	 		"                                    \"audioFile\": \"https://audio.oxforddictionaries.com/en/mp3/ewe_gb_1.mp3\",\n" + 
    	 		"                                    \"dialects\": [\n" + 
    	 		"                                        \"British English\"\n" + 
    	 		"                                    ],\n" + 
    	 		"                                    \"phoneticNotation\": \"IPA\",\n" + 
    	 		"                                    \"phoneticSpelling\": \"juː\"\n" + 
    	 		"                                }\n" + 
    	 		"                            ]\n" + 
    	 		"                        }\n" + 
    	 		"                    ],\n" + 
    	 		"                    \"language\": \"en-gb\",\n" + 
    	 		"                    \"lexicalCategory\": {\n" + 
    	 		"                        \"id\": \"pronoun\",\n" + 
    	 		"                        \"text\": \"Pronoun\"\n" + 
    	 		"                    },\n" + 
    	 		"                    \"text\": \"you\"\n" + 
    	 		"                }\n" + 
    	 		"            ],\n" + 
    	 		"            \"type\": \"headword\",\n" + 
    	 		"            \"word\": \"you\"\n" + 
    	 		"        }\n" + 
    	 		"    ],\n" + 
    	 		"    \"word\": \"you\"\n" + 
    	 		"}";
    	 // json=json.replaceAll("\\\\","");
    System.out.println("json:"+json);
    System.out.println("getField:"+searchMatch(json,"phoneticSpelling",0));
}
   
    
    /**
     * 正则表达式 查找匹配的字符串
     * @param json 字符串
     * @param word 正则表达式
     * @param index 提取正则匹配到字符串的哪一部分 0整串,1第一个()的内容,2第二个()...
     * @return 匹配值列表
     */
    public static String searchMatch(String json, String word,int index) {
    	//替换转义符
        if(!"".equals(json)) {
        	json = json.replaceAll("\\\\", "");
        }
        String value = "";
        Pattern pattern = Pattern.compile("(?<=(\"" + word+"\": ))\"(.+?)\"");//"(?<=(\"" + word+"\":))\"(\\w+)?\""
        Matcher matcher = pattern.matcher(json);
        if (matcher.find()) {
            matcher.reset();
            while (matcher.find()) {
                System.out.println("匹配到的整串-->" + matcher.group(0));
                value = matcher.group(index);
                System.out.println("整串中指定的子串-->" + value);
                 break;
            }
        }
        return value;
    }
    
    
    /**
     * json数据截取
     * @param jsonStr
     * @param fieldName
     * @return
     */
    private static String getFieldValueFromJsonStr(String jsonStr, String fieldName) {
        //替换转义符
        if(!"".equals(jsonStr)) {
            jsonStr = jsonStr.replaceAll("\\\\", "");
        }

        List<String> fieldValues = new ArrayList<>();
        String regex = "(?<=(\"" + fieldName + "\":))\"(.+?)(?=[\\,|\\}])";//"(?<=(\"" + fieldName + "\":)).*?(?=(\\,))";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(jsonStr);
        while (matcher.find()) {
            if (!"".equals(matcher.group().trim())) {
                fieldValues.add(matcher.group().trim());
            }
        }
        if(!fieldValues.isEmpty()) {
            return fieldValues.get(0);
        }else{
            return null;
        }
    }


分享到:
评论

相关推荐

    易语言正则取Json数据

    4. **执行匹配**:使用正则对象的`匹配`或`全局匹配`命令对Json数据进行处理。`匹配`会返回第一个匹配的结果,而`全局匹配`会返回所有匹配的结果。 5. **解析匹配结果**:匹配到的结果通常是一组字符串,你需要...

    易语言正则取Json数据源码

    在这个文件中,我们可以看到如何设置正则表达式,如何调用易语言的相关函数,以及如何处理匹配到的Json数据。通常,这样的源码会包含读取Json字符串、构造正则表达式、执行匹配操作以及提取结果等步骤。 为了更好地...

    易语言正则取Json数据源码-易语言

    2. **匹配JSON键值对**:JSON数据中键值对的格式通常是`"key": "value"`,使用正则表达式可以有效地找到这些对。例如,可以使用`"\"(.*?)\": \"(.*?)\"`这个正则表达式来匹配。 3. **分组与捕获**:在正则表达式中...

    python解析json串与正则匹配对比方法

    ### Python解析JSON串与正则匹配对比方法 在日常的编程工作中,经常需要处理各种各样的数据格式。其中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    正则表达式--递归匹配与非贪婪匹配

    在正则表达式中,递归匹配是一个重要的概念,它主要用于处理那些具有嵌套结构的数据,例如数学公式中的括号匹配或HTML标签的匹配。 ##### 1.1 嵌套匹配的需求 在很多场景下,我们希望正则表达式能够处理包含多层...

    网页抓取 正则表达式 前台处理json对象

    2. **正则表达式**:正则表达式(Regular Expression)是一种模式匹配语言,用于查找、替换或提取文本中的特定模式。在网页抓取后,通常需要对抓取的数据进行预处理,这时正则表达式就非常有用。它可以高效地从HTML...

    删除多项正则匹配的文件

    总的来说,"删除多项正则匹配的文件"这个工具结合了正则表达式的强大匹配能力、递归遍历的深度处理、文件图标展示的用户友好性和序列化技术的数据持久化,为开发者提供了一个高效且灵活的文件管理解决方案。...

    Js正则表达式匹配字符

    JavaScript中的正则表达式(Regular Expression)是一种模式匹配工具,用于在字符串中进行搜索、替换以及提取信息。它是编程语言中处理文本的强大武器,尤其在处理数据验证、文本解析和数据提取方面表现突出。本篇将...

    json数据查看器

    3. **错误检测**:工具能够检查输入的JSON数据是否符合规范,如果存在语法错误,如括号不匹配、引号缺失等问题,它会及时指出,帮助开发者快速定位问题。 4. **高亮显示**:为了提高可读性,JSON数据查看器会对不同...

    JS正则匹配中文的方法示例

    这些工具可以为用户节省编写和调试正则表达式的时间,尤其适合初学者和经常需要进行正则匹配的开发者。 正则表达式虽然强大,但在使用时也需要特别注意一些细节。例如,若使用不恰当,正则表达式可能会消耗大量的...

    Linux JSON 命令总结.zip_json linux_shell解析json

    类似于`awk`,`sed`也可以通过正则表达式对JSON数据进行简单的操作,如替换或提取特定内容。 在编写Shell脚本来解析JSON时,通常会结合这些工具,根据实际需求选择合适的命令。例如,你可以先用`curl`或`wget`获取...

    【JS相关问题处理】 正则表达式解决JS取值被过滤掉引号的方法

    例如,从HTML中抓取JSON数据时,你可能需要先使用`unescape()`函数,然后用正则修复引号,最后再用`JSON.parse()`: ```javascript var jsonStr = unescape(htmlElement.innerText); jsonStr = jsonStr.replace...

    swift-工具类\toolbox正则匹配加密压缩时间戳处理

    "toolbox"通常指的是一个集合了多种实用功能的库或模块,其中包括正则表达式匹配、数据加密、文件压缩、时间戳处理、emoji支持、对象序列化与反序列化、本地通知、单例模式、设备信息获取、图片处理以及键盘管理等。...

    正则文本数据提取器

    正则表达式(Regular Expression),简称正则,是一种强大的文本处理工具,用于匹配、查找、替换等操作。在处理文本数据时,正则表达式扮演着至关重要的角色,尤其是在提取特定模式的数据时。"正则文本数据提取器...

    易语言的json与正则类源码

    在易语言中,理解和操作JSON数据通常需要自定义的类或者库来完成,因为易语言的标准库并不直接支持JSON解析。 正则表达式(Regular Expression)是一种强大的文本处理工具,可以用来进行模式匹配、查找、替换等操作...

    editplus 支持 解析json

    5. **查找与替换**:EditPlus的查找与替换功能支持正则表达式,这对于在大量JSON数据中搜索特定模式或替换特定值非常实用。 6. **宏录制与播放**:如果你有重复性的JSON操作,可以利用EditPlus的宏功能来录制一系列...

    java解析任意层数json字符串的方法

    在解析JSON时,可以使用正则表达式来匹配JSON的关键字,如键值对的冒号":"和花括号"{}",以及数组中的逗号","等。通过这种方式,可以实现对JSON结构的初步分析。 递归算法(Recursive Algorithm)是一种在解决问题...

    使用正则表达式的格式化与高亮显示json字符串

    json字符串很有用,有时候一些后台接口返回的信息是字符串格式的,可读性很差,这个时候要是有个可以格式化并高亮显示json串的方法那就好多了,下面看看一个正则表达式完成的json字符串的格式化与高亮显示 ...

Global site tag (gtag.js) - Google Analytics