Java
 Computer >> コンピューター >  >> プログラミング >> Java

【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以降のプロジェクトでは、積極的に利用したい便利な機能です。

  1. JavaScript正規表現の名前付きキャプチャグループの使い方を解説

    JavaScript正規表現における名前付きキャプチャグループとはJavaScriptでは、正規表現の一部をまとめて扱うためにグループ化を行うことができます。グループ化は、対象となる文字やパターンを丸括弧 () で囲むだけで簡単に実現できます。さらに、ECMAScript 2018(ES9)から導入された名前付きキャプチャグループを使うと、各グループに任意の名前を付けることが可能になります。構文は (?<name>pattern) で、マッチ結果には groups.name というプロパティ経由でアクセスできます。番号ではなく名前で参照できるため、可読性と保守性の高いコードを書くの

  2. Javaの正規表現で文字列から数値を抽出する方法

    Javaの正規表現(Regular Expression)を使えば、文字列の中から数値だけを簡単に取り出すことができます。この記事では、実際のコード例とともに、さまざまなパターンでの数値抽出の方法を解説します。文字列を解析し、必要な情報を抜き出すスキルは、テスターにとって欠かせない能力の一つです。特にAPIテストでは、JSONやXML形式のレスポンスを解析する場面が多く、正規表現の知識が大いに役立ちます。以下では、Javaの正規表現を使って文字列から数字・数値を抽出する具体的な例を紹介します。文字列からすべての数値を抽出するimport java.util.regex.Matcher; imp