我想解析这个字符串:
{HHH { AAAA } fS } SFS}
按括号编号获取输出。如果我想首先得到输出应该是:
HHH { AAAA
第二次时:
HHH { AAAA } fS
等等
我尝试了这个正则表达式,但它没有给我预期的结果:
\{(.*?)\}{1}
最佳答案
您可以通过逆向模式解决您的问题:
public String getResult(String text) {
Pattern pattern = Pattern.compile("(\\{.*)\\}");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
return matcher.group(1);
} else {
return null;
}
}
public static void main(String args[]) {
Mcve mcve = new Mcve();
String text = "{HHH { AAAA } fS } SFS}";
while ((text = mcve.getResult(text)) != null) {
System.out.println(text);
}
}
输出
{HHH { AAAA } fS } SFS
{HHH { AAAA } fS
{HHH { AAAA
<小时/>
这个想法是获取第一个结果,然后将此结果发送到相同的方法,直到该方法返回 null
例如:
- 发送此字符串
{HHH { AAAA } fS } SFS}
接收{HHH { AAAA } fS } SFS
- 发送上一次迭代的结果
{HHH { AAAA } fS } SFS
接收{HHH { AAAA } fS
- 发送上一次迭代的结果
{HHH { AAAA } fS
接收{HHH { AAAA
- 发送上一次迭代的结果
{HHH { AAAA
立即接收null
停止
关于Java - 正则表达式解析x匹配的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49347935/