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

Java正規表現で指定した2つの式のいずれかに一致させる方法(|演算子の使い方)

Javaの正規表現では、論理OR演算子「|」を使用することで、指定した2つの式のうちどちらか一方に一致させることができます。

例えば、ひとつの正規表現パターンで複数の条件にマッチさせたい場合、それぞれの式を「|」で区切って記述するだけで実現できます。

論理OR演算子「|」の基本

|」は「または」を意味する演算子です。A|B と書くと、「Aに一致する、またはBに一致する」という意味になります。これにより、単一のパターンで複数の候補を柔軟に扱えるようになります。

例1:「hello」で始まる、または「bye」で終わる文字列に一致させる

次の例では、入力された文字列が「hello」で始まるか、あるいは「bye」で終わるかを判定しています。

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();

        // "hello"で始まる、または"bye"で終わる文字列に一致する正規表現
        String regex = "^hello|bye$";

        // 正規表現をコンパイルする
        Pattern pattern = Pattern.compile(regex);

        // Matcherオブジェクトを取得する
        Matcher matcher = pattern.matcher(input);

        if (matcher.find()) {
            System.out.println("一致しました");
        } else {
            System.out.println("一致しませんでした");
        }
    }
}

実行結果1

文字列を入力してください
hello how are you
一致しました

入力が「hello」で始まっているため、パターンに一致しています。

実行結果2

文字列を入力してください
This is a sample string
一致しませんでした

この文字列は「hello」で始まっておらず、「bye」でも終わっていないため、一致しません。

例2:入力値が「yes」または「no」であるかを判定する

次の例では、matches() メソッドを使って、入力値が完全に「yes」または「no」と一致するかどうかを確認しています。

import java.util.Scanner;

public class RegexExample {
    public static void main(String args[]) {
        // "yes"または"no"に一致する正規表現
        String regex = "yes|no";

        System.out.println("入力値を入力してください:");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();

        boolean bool = input.matches(regex);

        if (bool) {
            System.out.println("一致しました");
        } else {
            System.out.println("一致しませんでした");
        }
    }
}

実行結果1

入力値を入力してください:
yes
一致しました

実行結果2

入力値を入力してください:
hello
一致しませんでした

find() と matches() の違いに注意

例1で使用した find() は、文字列の一部がパターンに一致すればtrueを返すのに対し、例2の matches() は文字列全体がパターンと完全に一致した場合のみtrueを返します。用途に応じて適切なメソッドを選択することが重要です。

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

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

  2. JavaのGsonで@SerializedNameアノテーションを使ってJSONプロパティ名を変更する方法

    JavaのオブジェクトをJSONに変換する際、クラスのフィールド名とは異なるプロパティ名で出力したいケースはよくあります。そんなときに役立つのが、Gsonが提供する@SerializedNameアノテーションです。このアノテーションを付与すると、シリアライズ(JSONへの変換)・デシリアライズ(JSONからの復元)の両方において、指定した名前がフィールド名として使用されます。なお、@SerializedNameはGsonインスタンスに設定されたデフォルトの命名ポリシーを含む、あらゆるFieldNamingPolicyを上書きします。命名ポリシー自体を切り替えたい場合は、GsonBuilderク