【Java入門】正規表現の名前付きキャプチャグループの使い方
正規表現における名前付きキャプチャグループとは、マッチした各グループに名前を付け、その名前を使って参照できる機能です。JavaではSE 7(Java 7)からこの機能がサポートされています。
名前付きキャプチャグループの基本構文
名前付きキャプチャグループは、次のように (?<name>パターン) の形式で定義します。
(?<globalCode>[\d]{2})-(?<nationalCode>[\d]{5})-(?<number>[\d]{6})
マッチ結果は、Matcher クラスの group("名前") メソッドを使って取得できます。インデックス番号ではなく名前でアクセスできるため、コードの可読性が大きく向上します。
サンプルコード
以下は、電話番号形式の文字列を国コード・市外局番・番号の3つのグループに分解し、それぞれ名前を付けて取り出す例です。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ReplaceAll {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter input text: ");
String input = sc.nextLine();
String regex = "(?<globalCode>[\\d]{2})-(?<nationalCode>[\\d]{5})-(?<number>[\\d]{6})";
// Patternオブジェクトを作成
Pattern pattern = Pattern.compile(regex);
// コンパイルしたパターンと入力文字列を照合
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println("Global code: " + matcher.group("globalCode"));
System.out.println("National code: " + matcher.group("nationalCode"));
System.out.println("Phone number: " + matcher.group("number"));
}
}
}
実行結果
Enter input text: 91-08955-224558 Global code: 91 National code: 08955 Phone number: 224558
コードのポイント
- パターンの定義:
(?<globalCode>...)のように、(?<名前>)を先頭に付けることで各グループに名前を割り当てています。 - group()メソッド:
matcher.group("globalCode")のように名前を指定すると、対応するキャプチャグループの値を取得できます。 - find()メソッド: 入力文字列の中からパターンに一致する部分を順番に検索し、見つかるたびに処理を実行します。
まとめ
名前付きキャプチャグループを活用すると、番号ではなく意味のある名前でグループを参照できるため、複雑な正規表現でも意図が分かりやすくなり、保守性の高いコードを書けます。Java 7以降のプロジェクトでは、積極的に利用したい便利な機能です。
-
JavaScript正規表現の名前付きキャプチャグループの使い方を解説
JavaScript正規表現における名前付きキャプチャグループとはJavaScriptでは、正規表現の一部をまとめて扱うためにグループ化を行うことができます。グループ化は、対象となる文字やパターンを丸括弧 () で囲むだけで簡単に実現できます。さらに、ECMAScript 2018(ES9)から導入された名前付きキャプチャグループを使うと、各グループに任意の名前を付けることが可能になります。構文は (?<name>pattern) で、マッチ結果には groups.name というプロパティ経由でアクセスできます。番号ではなく名前で参照できるため、可読性と保守性の高いコードを書くの
-
Javaの正規表現で文字列から数値を抽出する方法
Javaの正規表現(Regular Expression)を使えば、文字列の中から数値だけを簡単に取り出すことができます。この記事では、実際のコード例とともに、さまざまなパターンでの数値抽出の方法を解説します。文字列を解析し、必要な情報を抜き出すスキルは、テスターにとって欠かせない能力の一つです。特にAPIテストでは、JSONやXML形式のレスポンスを解析する場面が多く、正規表現の知識が大いに役立ちます。以下では、Javaの正規表現を使って文字列から数字・数値を抽出する具体的な例を紹介します。文字列からすべての数値を抽出するimport java.util.regex.Matcher; imp