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

Javaの正規表現(RegEx)で数字をマッチングする方法

Javaでは、文字列内の数字(0〜9)をマッチングするために、正規表現のメタ文字「\d」を使用できます。また、同じ意味を持つ文字クラス「[0-9]」を使うことも可能です。

[0-9]

この記事では、実際のコード例を通じて、数字のマッチング方法をわかりやすく解説します。

例1:文字列に含まれる数字の個数を数える

次の例では、ユーザーから入力された文字列に対して正規表現「\d」を適用し、含まれる数字の総数をカウントして表示します。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example {
    public static void main(String args[]) {
        // ユーザーから文字列を読み込む
        System.out.println("文字列を入力してください");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        String regex = "\\d";
        // 正規表現をコンパイル
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトを取得
        Matcher matcher = pattern.matcher(input);
        int count = 0;
        while(matcher.find()) {
            count++;
        }
        System.out.println("数字の個数: " + count);
    }
}

実行結果

文字列を入力してください
sample text 1234 6657
数字の個数: 8

このプログラムでは、Patternクラスのcompile()メソッドで正規表現をコンパイルし、Matcherオブジェクトを生成しています。find()メソッドがマッチを見つけるたびにカウントを増やすことで、文字列中の数字の総数を求められます。

例2:10桁の数字かどうかを検証する

量指定子「{n}」を使うと、「直前の要素がちょうどn回繰り返される」という条件を表現できます。次の例では、「\d{10}」という正規表現を使って、入力された文字列が10桁の数字であるかどうかを判定します。

import java.util.Scanner;

public class RegexExample {
    public static void main( String args[] ) {
        // 10桁の数字を受け付ける正規表現
        String regex = "\\d{10}";
        System.out.println("値を入力してください: ");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        boolean result = input.matches(regex);
        if(result) {
            System.out.println("10桁の数字です");
        } else {
            System.out.println("不正な入力です");
        }
    }
}

実行結果1

値を入力してください:
9848022558
10桁の数字です

実行結果2

値を入力してください:
5337
不正な入力です

Stringクラスのmatches()メソッドは、文字列全体が正規表現に一致する場合にtrueを返します。電話番号やIDなど、桁数が固定の数値入力をバリデーションしたい場合に便利な手法です。

  1. Java正規表現(RegEx)で任意の文字にマッチさせる方法

    Javaの正規表現におけるメタ文字「.」(ドット)は、任意の1文字にマッチします。マッチ対象はアルファベットでも数字でも、記号などの特殊文字でも構いません。メタ文字「.」の基本「.」は改行文字以外のあらゆる単一文字と一致するため、パターンの柔軟性を高めたい場面で非常に便利です。なお、ドットそのもの(リテラルの「.」)にマッチさせたい場合は、バックスラッシュでエスケープして「\.」と記述します。例1:任意の1文字とのマッチ次のプログラムでは、ユーザーから入力された文字列に対して正規表現「.」を適用し、文字数をカウントしています。import java.util.Scanner; import j

  2. Pythonの正規表現を使って文字列から数字のみを抽出・マッチングする方法

    Pythonでは、標準ライブラリの re モジュールを使うことで、正規表現によるパターンマッチングが簡単に行えます。文字列から「数字のみ」を取り出したい場合は、メタ文字 \d(任意の1桁の数字に一致)を使用します。ここでは、代表的な2つの方法——re.search() と re.findall() を使った例を紹介します。なお、コードはPython 3系の記法に準拠しています。例1:re.search() で最初に見つかった数字の並びを取得する次のコードは、指定した文字列の中から最初に出現する連続した数字(1桁以上)を検索し、マッチオブジェクトとして返します。import re m = re