Java模式匹配:第一级论题

Java模式匹配:第一级论题,java,regex,Java,Regex,我想使用Java模式匹配来分割字符串,以便在第一级论文中获得内容。 例如字符串 address={country={iso=ITA&name=italy}}&category={name=demo&tags={tag1=value1&tag2=value2}} 我想去 country={iso=ITA&name=意大利人}和name=demo&tags={tag1=value1&tag2=value2} Java正则表达式模式匹配(组/前瞻)是否可能实现这一点?

我想使用Java模式匹配来分割字符串,以便在第一级论文中获得内容。 例如字符串

address={country={iso=ITA&name=italy}}&category={name=demo&tags={tag1=value1&tag2=value2}}
我想去

country={iso=ITA&name=意大利人}
name=demo&tags={tag1=value1&tag2=value2}

Java正则表达式模式匹配(组/前瞻)是否可能实现这一点?或者我是否必须“手动”跟踪Paranthes级别?这对我来说很有效:

String str = "address={country={iso=ITA&name=italy}}&category={name=demo&tags={tag1=value1&tag2=value2}}";
            Pattern p = Pattern.compile("\\{(.+?)\\}\\}");
            Matcher m = p.matcher(str);
            while(m.find())
                System.out.println(m.group(1));
收益率:

country={iso=ITA&name=italy
name=demo&tags={tag1=value1&tag2=value2

不,您不能将嵌套结构与有限自动机(regex是有限自动机)相匹配。在我看来,您应该编写自己的解析器来计算括号。使用正则表达式也可以解决这个问题(取决于您输入的形式),但我怀疑这不是一件容易的任务,如果您的需求发生变化(例如增加了无限嵌套级别),维护这样的正则表达式将是一场噩梦。这些东西(对象?)看起来很像JSON,但却不是。如果您可以控制这些代码的生成,请尝试使用JSON路径并使用Jackson库。那么我的第一个直觉显然是正确的,这需要一种上下文无关的语法方法;-)谢谢你核实。