ホームページ  >  記事  >  Java  >  Java 正規表現でのグループのキャプチャはどのように機能しますか?

Java 正規表現でのグループのキャプチャはどのように機能しますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 22:25:30568ブラウズ

How do Capturing Groups Work in Java Regular Expressions?

Java Regex キャプチャ グループについて

このコード スニペットでは、Java の正規表現 (regex) ライブラリを使用して文字列の一部を抽出します。正規表現は「(.)(d )(.)」として定義されます。

  • (.*): 次のグループの前にある任意の数の任意の文字と一致します。
  • (d ): 前のグループの後の任意の桁数と一致します。
  • (.*): 前のグループの後の任意の数の任意の文字と一致します。

正規表現の実行

文字列「この注文は QT3000 に対して行われました! OK?」に対して正規表現が実行されると、次の結果が生成されます:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

貪欲な量指定子について

正規表現で使用されるデフォルトの量指定子は貪欲です。これは、次のグループを満たすためにできるだけ多くの文字と一致することを意味します。この場合、「.*」は最初の数字が見つかるまで文字列全体と一致し、3 番目のグループには文字が残りません。

リラクタント量指定子の使用

一致するには必要な文字のみを使用するには、疑問符で示された消極的な数量詞を使用できます。 「(.)」を「(.?)」に置き換えると、可能な最小数の文字に一致し、次の出力が得られます:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

グループをキャプチャする利点

グループをキャプチャすると、一致する文字列の特定の部分を抽出してさらに使用できるようになります。この例では、以下のコード スニペットに示すように、「Matcher」オブジェクトの「group()」メソッドを通じて各グループの一致した値にアクセスできます。

<code class="java">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));
}</code>

以上がJava 正規表現でのグループのキャプチャはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。