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

Javaの正規表現「a|b」メタ文字の使い方を徹底解説

Javaの正規表現におけるメタ文字「a|b」は、選択(OR)を表す特殊文字です。このメタ文字を使うと、「a」または「b」のどちらかに一致するパターンを定義できます。複数の候補の中からいずれかにマッチさせたい場合に非常に便利です。

基本的な構文

「|」(パイプ)記号で区切ることで、左右の部分式のどちらかに一致する正規表現を作成できます。3つ以上の候補を指定することも可能です。

String regex = "cat|dog"; // 「cat」または「dog」に一致

サンプルコード1:マッチ数をカウントする

次のJavaプログラムでは、「Hello」または「welcome」という語句が入力文字列に何回出現するかを、正規表現「Hello|welcome」を使ってカウントしています。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
   public static void main( String args[] ) {
      String regex = "Hello|welcome";
      String input = "Hello how are you welcome to Tutorialspoint";
      Pattern p = Pattern.compile(regex);
      Matcher m = p.matcher(input);
      int count = 0;
      while(m.find()) {
         count++;
      }
      System.out.println("Number of matches: "+count);
   }
}

実行結果

Number of matches: 2

入力文字列には「Hello」と「welcome」がそれぞれ1回ずつ含まれているため、合計2件のマッチが検出されます。

サンプルコード2:ユーザー入力のバリデーションに活用

次のJavaプログラムは、ユーザーから性別の値を読み取り、「M」(男性)、「F」(女性)、「O」(その他)のいずれかのみを受け付ける例です。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
   public static void main( String args[] ) {
      // M または F または O に一致する正規表現
      String regex = "M|F|O";
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter students gender:");
      String name = sc.nextLine();
      Pattern p = Pattern.compile(regex);
      Matcher m = p.matcher(name);
      if(m.matches()) {
         System.out.println("All OK");
      } else {
         System.out.println("Wrong Input");
      }
   }
}

実行結果1(有効な入力の場合)

Enter students gender:
M
All OK

実行結果2(無効な入力の場合)

Enter students gender:
male
Wrong Input

ポイント解説

  • find() メソッド:入力文字列内を順番に走査し、パターンに一致する部分を1つずつ検出します。マッチ数のカウントなどに適しています。
  • matches() メソッド:入力文字列全体がパターンと完全に一致するかどうかを判定します。入力値の検証(バリデーション)に適しています。

このように「a|b」メタ文字を活用することで、複数の候補からの選択マッチを簡潔に実装でき、文字列検索やフォーム入力チェックなど、さまざまな場面で応用できます。

  1. Javaの正規表現における$(ドル)メタ文字の使い方

    正規表現におけるサブ表現(メタ文字)「$」は、行の末尾に一致します。パターンの最後に「$」を置くことで、指定した文字列で終わるテキストだけをマッチさせることができます。なお、デフォルトでは「$」は入力全体の末尾に一致しますが、Pattern.MULTILINEフラグを有効にすると、行区切り文字(改行など)の直前にも一致するようになります。例1:行末の一致を確認する次のJavaプログラムでは、「Tutorialspoint」という文字列で終わる入力に対して、正規表現「Tutorialspoint$」が何回一致するかを数えています。import java.util.regex.Matcher; i

  2. Java正規表現のメタ文字「^(キャレット)」の使い方を解説

    正規表現におけるサブ式(メタ文字)「^」は、行の先頭にマッチします。この記号を正規表現の中で使用すると、入力文字列の中でその後に続くパターンが行頭から始まる場合に一致とみなされます。 例1:行頭のパターンにマッチするか確認する 次のサンプルコードでは、入力文字列が「Hi how are you」というフレーズで始まっているかどうかを「^」を使って判定しています。 import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExample { public static void m