正则获取Json字符串和数组

1. 正则匹配简单JSON串:

    /**
     * 简单JSON串匹配
     *
     * @param src        源字符串
     * @param firstsSign 首次出现标识
     * @return
     */
    private static String regularJsonSimple(String src, String firstsSign) {

        // \{ : 字符串转义
        // [^}] : 匹配除了}以外的任意字符  -> Tips:反义的知识点
        // * :重复零次或更多次  + : 重复一次或更多次  -> Tips:重复的知识dian
        String target = "\\{\"" + firstsSign + "\":[^\\}]*\\}";
        Matcher m = Pattern.compile(target).matcher(src);
        if (m.find()) {
            return m.group();
        }
        return null;
    }

2. 正则匹配复杂JSON串:

    /**
     * 复杂JSON串匹配
     *
     * @param src          源字符串
     * @param firstsSign   首次出现标识
     * @param lastBraceNum 最后出现}的次数
     * @return
     */
    private static String regularJsonComplex(String src, String firstsSign, Integer lastBraceNum) {
        // . : 匹配除换行符以外的任意字符 -> Tips:元字符
        String target = "(\\{\"" + firstsSign + "\":.*)";
        Matcher m = Pattern.compile(target).matcher(src);
        if (m.find()) {
            String newSrc = m.group();
            int count = 0;
            String target1 = "\\}";
            Matcher m1 = Pattern.compile(target1).matcher(newSrc);
            while (m1.find()) {
                if (++count == lastBraceNum) {
                    return newSrc.substring(0, m1.end());
                }
            }
        }
        return null;
    }

3. 正则匹配JSON数组:

    /**
     * JSON数组匹配
     *
     * @param src        源字符串
     * @param firstsSign 首次出现标识
     * @return
     */
    private static String regularJsonArray(String src, String firstsSign) {

        // \{ : 字符串转义
        // [^}] : 匹配除了}以外的任意字符  -> Tips:反义的知识点
        // * :重复零次或更多次  + : 重复一次或更多次  -> Tips:重复的知识dian
        String target = "\\[\\{\"" + firstsSign + "\":[^\\]]*\\]";
        Matcher m = Pattern.compile(target).matcher(src);
        if (m.find()) {
            return m.group();
        }
        return null;
    }

你可能感兴趣的:(json,前端,javascript)