Java での名前付きグループ化
Java の java.regex パッケージは、名前付きグループ化をサポートしていません。 Java 7 以降
Java 7 以降では、名前付きグループ化がサポートされるようになりました。名前付きグループは次を使用して定義できます:
名前付きグループは次を使用して参照できます:
1 | <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 コードの例:
名前付きグループ化を使用してテキストを置換する例:
1 2 3 4 5 6 7 | <code class = "java" >Pattern pattern = Pattern.compile( "(?<login>\w+) (?<id>\d+)" );
Matcher matcher = pattern.matcher( "TEST 123" );
if (matcher.find()) {
String login = matcher.group( "login" );
String id = matcher.group( "id" );
}</code>
|
ログイン後にコピー
名前付きグループ化後方参照を使用する例:
1 | <code class = "java" >String result = matcher.replaceAll( "aaaaa__sssss_____" );</code>
|
ログイン後にコピー
以上がJava 正規表現で名前付きキャプチャ グループを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。