ホームページ >Java >&#&チュートリアル >Java 正規表現で名前付きグループを使用するにはどうすればよいですか?

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-06 01:27:02192ブラウズ

How Can I Utilize Named Groups in Java Regular Expressions?

Java Regex 名前付きグループ: 徹底した調査

Java の java.regex パッケージには組み込みの名前付きグループのサポートがないにもかかわらず、サードパーティのライブラリは、この制限に対する解決策を提供します。

名前付きグループの Java 7 サポート

Java 7 では、名前付きキャプチャ グループが次のように導入されました。 constructs:

  • (?capturing text): 名前付きグループ「name」を定義します。
  • k: 名前付きグループ「name」を後方参照します。
  • ${name}: Matcher の置換文字列でキャプチャされたテキストを参照します。
  • Matcher.group(String name): 名前付きグループ「name」によってキャプチャされたテキストを取得します。

Java 7 以前の代替手段

Java 7 より前は、いくつかのライブラリが名前付きグループのサポートを提供していました:

  • Googlenamed-regex : このライブラリは、ネストされた名前付きグループや再帰正規表現パターンなどの豊富な機能を提供します。
  • jregex: サポートは制限されていますが、このライブラリは依然として基本的な名前付きグループ機能を提供します。

名前付き正規表現パターンを使用した次の例を考えてみましょう:

String input = "TEST 123";
Pattern pattern = Pattern.compile("(?<login>[\w]+) (?<id>[\d]+)");
Matcher matcher = pattern.matcher(input);
System.out.println("Login: " + matcher.group("login"));
System.out.println("ID: " + matcher.group("id"));

これは出力します:

Login: TEST
ID: 123

制限事項

Java の名前付きグループのサポートは次の点で制限されています:

  • 名前ごとに名前付きグループは 1 つだけです。 この制限によりキャプチャが妨げられます。同じ名前付きグループが複数出現します。
  • 正規表現内再帰はサポートされません。 名前付きグループは、正規表現パターン内の再帰のターゲットとして使用できません。

結論

サードパーティ ライブラリは、Java の強力な名前付きグループ サポートを提供します。ただし、Java 7 での名前付きグループの導入により、開発者は正規表現パターンで名前付きグループを操作するための、より合理化され標準化されたアプローチを使用できるようになりました。

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

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