正则表达式匹配key-value

1.先把字符串进行匹配

2.从字符串中得到想要的值

  public void testRegex() {
        String msg = "Rect(x1=\"0\" y1=\"0\" x2=\"416\" y2=\"416\")Rect(x1=\"1\" y1=\"2\" x2=\"413\" y2=\"414\")";
        List<String> textList = new ArrayList<String>();
        Pattern pattern = Pattern.compile("(x1=\"[^\"]*\"\\s*y1=\"[^\"]*\"\\s*x2=\"[^\"]*\"\\s*y2=\"[^\"]*\")");
        Matcher matcher = pattern.matcher(msg);
        while (matcher.find()) {
            textList.add(matcher.group(1));
        }
        for (String text : textList) {
            try {
                System.out.println(text);
                System.out.println(getValue(text,"x1"));
                System.out.println(getValue(text,"y1"));
                System.out.println(getValue(text,"x2"));
                System.out.println(getValue(text,"y2"));
            }
            catch (Exception ex)
            {}
        }
    }

    public static String getValue(String source,String key) {
        if (isEmpty(source)) {
            return null;
        }

        Pattern p = Pattern.compile("\\b" + key + "\\s*=\\s*\"([^\"]*)\"");
        Matcher m = p.matcher(source);
        if (m.find()) {
            return m.group(1);
        }
        return null;
    }
    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }
输出


注意,匹配到的字符串并不含括号,如果想要匹配括号,那么应该这么写

Pattern pattern = Pattern.compile("(\\(x1=\"[^\"]*\"\\s*y1=\"[^\"]*\"\\s*x2=\"[^\"]*\"\\s*y2=\"[^\"]*\"\\))");

相关文章

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^d{n}$ 3 至少n位的数字:^d{n,}$ 4 m-n位的数字...
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。下面整理一些常用的正则...
0. 注: 不同语言中的正则表达式实现都会有一些不同。下文中的代码示例除特别说明的外,都是使用JS中的...
 正则表达式是从信息中搜索特定的模式的一把瑞士军刀。它们是一个巨大的工具库,其中的一些功能经常...
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数...
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n...