私はJavaでregexを使って{}の間のすべての結果を抽出し、一度に1つずつループします。Regexはループ内のfindメソッドを使って一度だけ一致します
これは私が使用しているコードである:
Pattern p = Pattern.compile("(\\{.*})");
Matcher m = p.matcher(validatePage);
while (m.find()) {
JSONObject jsonObj = new JSONObject(m.group(1));
System.out.println(jsonObj);
}
をこれは私がしかしm個の検索()は一度だけをループさ
<tr><td class='warning'></td><td>[email protected]</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":"[email protected]","severity":"WARNING","lineNumber":43,"column":3,"offset":701,"length":118,"message":"extension, version is missing"}
{"resourceUri":"[email protected]","severity":"WARNING","lineNumber":43,"column":3,"offset":701,"length":118,"message":"extension, release is missing"}
{"resourceUri":"[email protected]","severity":"WARNING","lineNumber":43,"column":3,"offset":701,"length":118,"message":"extension, correction is missing"}
{"resourceUri":"[email protected]","severity":"WARNING","lineNumber":50,"column":3,"offset":825,"length":135,"message":"extension, version is missing"}
を検索していたテキストでは、最初に印刷します結果はうまくいって終了し、なぜ私は理解できません。正規表現マッチャーで実行すると、すべての結果が正しく検出されます。それぞれの結果にマッチさせてループさせる必要がある、私が見逃していることはありますか?
試し '(\\ {。*?})を再生することができません' –
として不要なグループを削除するために
(\\{.*?})
を使用することができます。コードは4つの一致を見つけます。 [IDEONE](https://ideone.com/0EqFPI)を参照してください。 – Andreasコードと自分の答えを見直したあとも複製できません。 – Mena