ホームページ  >  記事  >  Java  >  Java 正規表現で名前付きキャプチャ グループを使用するにはどうすればよいですか?

Java 正規表現で名前付きキャプチャ グループを使用するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-04 22:10:02551ブラウズ

How can I use named capturing groups in Java regular expressions?

Java での名前付きグループ化

Java の java.regex パッケージは、名前付きグループ化をサポートしていません。 Java 7 以降

Java 7 以降では、名前付きグループ化がサポートされるようになりました。名前付きグループは次を使用して定義できます:

名前付きグループは次を使用して参照できます:

<code class="java">(?<name>capturing text)</code>

k: 名前付きグループの逆参照

    Matcher .group(String name): 指定された名前付きグループに従ってキャプチャされた入力サブシーケンスを返します
  • ${name} in Matcher.replaceAll(): マッチャーを参照して、文字列内のキャプチャされたグループを置き換えます
  • 代替案 (Java 7 より前のバージョンの場合)

Java 7 より前のバージョンの場合、次の代替案が利用可能です:

Googlenamed-regex
    : 名前付きグループ化のサポートを提供する軽量ライブラリ。
  • jregex
  • : 名前付きグループのサポートを含む、機能が豊富な正規表現ライブラリ。
  • カスタム実装

独自のバージョンの正規表現を作成して、名前付きグループ化をサポートすることもできます。たとえば、Regex2 ライブラリはこのサポートを提供します。

名前付きグループ化を使用した正規表現の例:

名前付きグループ化を使用した Java コードの例:

(?<login>\w+) (?<id>\d+)

名前付きグループ化を使用してテキストを置換する例:

Pattern pattern = Pattern.compile("(?&lt;login&gt;\w+) (?&lt;id&gt;\d+)");
Matcher matcher = pattern.matcher("TEST 123");

if (matcher.find()) {
  String login = matcher.group("login");
  String id = matcher.group("id");
}

名前付きグループ化後方参照を使用する例:

<code class="java">String result = matcher.replaceAll("aaaaa__sssss_____");</code>

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

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