Java Regex キャプチャ グループについて
このコード スニペットでは、Java の正規表現 (regex) ライブラリを使用して文字列の一部を抽出します。正規表現は「(.)(\d )(.)」として定義されます。ここで:
正規表現の実行
文字列「この注文は QT3000 に対して行われました! OK?」に対して正規表現が実行されると、次の結果が生成されます:
Found value: This order was placed for QT3000! OK? Found value: This order was placed for QT Found value: 3000
貪欲な量指定子について
正規表現で使用されるデフォルトの量指定子は貪欲であり、次のグループを満たすためにできるだけ多くの文字と一致することを意味します。この場合、「.*」は最初の数字が見つかるまで文字列全体と一致し、3 番目のグループには文字が残りません。
Using Reluctant Quantifiers
一致するには必要な文字のみを使用するには、疑問符で示された消極的な数量詞を使用できます。 「(.)」を「(.?)」に置き換えると、可能な最小数の文字に一致し、次の出力が得られます。
Found value: This order was placed for QT3000! OK? Found value: This order was placed for QT Found value: 3000
グループをキャプチャする利点
グループをキャプチャすると、一致する文字列の特定の部分を抽出して後で使用できるようになります。この例では、以下のコード スニペットに示すように、「Matcher」オブジェクトの「group()」メソッドを通じて各グループの一致した値にアクセスできます。
Pattern pattern = Pattern.compile("(.*?)(\\d )(.*)");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
System.out.println("group 1: " matcher.group(1));
System.out.println("group 2: " matcher.group(2));
System.out.println("group 3: " matcher.group(3));
}
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3