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など、桁数が固定の数値入力をバリデーションしたい場合に便利な手法です。
-
Java正規表現(RegEx)で任意の文字にマッチさせる方法
Javaの正規表現におけるメタ文字「.」(ドット)は、任意の1文字にマッチします。マッチ対象はアルファベットでも数字でも、記号などの特殊文字でも構いません。メタ文字「.」の基本「.」は改行文字以外のあらゆる単一文字と一致するため、パターンの柔軟性を高めたい場面で非常に便利です。なお、ドットそのもの(リテラルの「.」)にマッチさせたい場合は、バックスラッシュでエスケープして「\.」と記述します。例1:任意の1文字とのマッチ次のプログラムでは、ユーザーから入力された文字列に対して正規表現「.」を適用し、文字数をカウントしています。import java.util.Scanner; import j
-
Pythonの正規表現を使って文字列から数字のみを抽出・マッチングする方法
Pythonでは、標準ライブラリの re モジュールを使うことで、正規表現によるパターンマッチングが簡単に行えます。文字列から「数字のみ」を取り出したい場合は、メタ文字 \d(任意の1桁の数字に一致)を使用します。ここでは、代表的な2つの方法——re.search() と re.findall() を使った例を紹介します。なお、コードはPython 3系の記法に準拠しています。例1:re.search() で最初に見つかった数字の並びを取得する次のコードは、指定した文字列の中から最初に出現する連続した数字(1桁以上)を検索し、マッチオブジェクトとして返します。import re m = re