gpt4 book ai didi

java - 正则表达式在循环中使用 find 方法仅匹配一次

转载 作者:行者123 更新时间:2023-11-30 06:37:38 24 4
gpt4 key购买 nike

我正在尝试在 Java 中使用正则表达式来提取 { } 之间的所有结果并一次循环一个。

这是我正在使用的代码:

Pattern p = Pattern.compile("(\\{.*})");
Matcher m = p.matcher(validatePage);
while (m.find()) {
JSONObject jsonObj = new JSONObject(m.group(1));
System.out.println(jsonObj);
}

这是我正在搜索的文本

<tr><td class='warning'></td><td>test-testing-tester@2016-07-08.txt</td>
<td>TEST</td><td class='warningMessage'>[WARNING]</td><td
class='warningMessage'>File with the revision 2016-07-08 validated
successfully and is ready to be published. Warnings were detected. Please
see report.</td></tr>
{"resourceUri":"test-testing-tester@2016-07-08.txt","severity":"WARNING","lineNumber":43,"column":3,"offset":701,"length":118,"message":"extension, version is missing"}
{"resourceUri":"test-testing-tester@2016-07-08.txt","severity":"WARNING","lineNumber":43,"column":3,"offset":701,"length":118,"message":"extension, release is missing"}
{"resourceUri":"test-testing-tester@2016-07-08.rxt","severity":"WARNING","lineNumber":43,"column":3,"offset":701,"length":118,"message":"extension, correction is missing"}
{"resourceUri":"test-testing-tester@2016-07-08.txt","severity":"WARNING","lineNumber":50,"column":3,"offset":825,"length":135,"message":"extension, version is missing"}

但是 m find() 仅循环一次,很好地打印第一个结果,然后结束,我不明白为什么。当我通过正则表达式匹配器运行它时,它发现所有结果都很好。我是否需要做一些事情来匹配每个结果并循环它?

最佳答案

您可以使用 (\\{.*?}) 使您的正则表达式非贪婪

删除不需要的组

Pattern p = Pattern.compile("\\{.*?}");
Matcher m = p.matcher(validatePage);
while (m.find()) {
JSONObject jsonObj = new JSONObject(m.group());
System.out.println(jsonObj);
}

关于java - 正则表达式在循环中使用 find 方法仅匹配一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44951824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com