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

Java正規表現の文字クラス\p{javaUpperCase}とは?大文字マッチングの使い方を解説

Javaの正規表現における文字クラス\p{javaUpperCase}は、大文字(アッパーケース)にマッチするための文字クラスです。このクラスは、java.lang.CharacterクラスのisUpperCase()メソッドに引数として渡したときにtrueを返すすべての文字に一致します。


ASCIIのA〜Zだけでなく、Unicodeで定義された各言語の大文字にも対応しているため、国際化を意識したテキスト処理でも安心して利用できます。ここでは、実際のサンプルコードを通じて具体的な使い方を確認していきましょう。


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

次の例では、ユーザーが入力した文字列に対して正規表現を適用し、大文字が出現した回数をカウントして表示します。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
    public static void main(String args[]) {
        // ユーザーから文字列を入力として受け取る
        System.out.println("Enter a string");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        // 正規表現:大文字1文字にマッチ
        String regex = "[\\p{javaUpperCase}]";
        // 正規表現をコンパイルしてPatternオブジェクトを作成
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトを取得
        Matcher matcher = pattern.matcher(input);
        int count = 0;
        while(matcher.find()) {
            count++;
        }
        System.out.println("Number of upper case characters: "+count);
    }
}

実行結果

Enter a string
This IS A sample TExt
Number of upper case characters: 6

入力文字列「This IS A sample TExt」には、T・I・S・A・T・Eの6つの大文字が含まれているため、カウント結果は6となります。


例2:大文字のみで構成された文字列を抽出する

次の例では、行頭を表す「^」と行末を表す「$」を組み合わせた正規表現を使用し、文字列全体が大文字だけで構成されているかどうかを判定します。5つの入力文字列の中から、条件を満たすものだけを出力します。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
    public static void main( String args[] ) {
        // 大文字のみの文字列全体にマッチする正規表現
        String regex = "^\\p{javaUpperCase}+$";
        // 入力データを受け取る
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter 5 input strings: ");
        String input[] = new String[5];
        for (int i=0; i<5; i++) {
            input[i] = sc.nextLine();
        }
        // Patternオブジェクトを作成
        Pattern p = Pattern.compile(regex);
        System.out.println("Strings with only upper case characters: ");
        for(int i=0; i<5;i++) {
            // Matcherオブジェクトを作成
            Matcher m = p.matcher(input[i]);
            if(m.matches()) {
                System.out.println(m.group());
            }
        }
    }
}

実行結果

Enter 5 input strings:
Raju
RAMU
rahman
radha
SUnDar*
Strings with only upper case characters:
RAMU

5つの入力のうち、すべての文字が大文字である「RAMU」だけがマッチして出力されました。このように\p{javaUpperCase}を使えば、Character.isUpperCase()メソッドと同等の判定を正規表現の中で直接行うことができます。入力値のバリデーションや文字種チェックなど、幅広い場面で活用できるので、ぜひ覚えておきましょう。

  1. JavaのCharMatcherクラスとは?主要メソッドと使い方を徹底解説

    CharMatcherクラスは、Predicateが任意のObjectに対して真偽値を判定するのと同じように、任意のJavaのchar値に対してtrueまたはfalseを判定するクラスです。Google Guavaライブラリに含まれており、文字単位のマッチングやフィルタリング処理をシンプルかつ直感的に記述できる強力なユーティリティとして知られています。 CharMatcherの主なメソッド 番号メソッドと説明 1CharMatcher and(CharMatcher other)このマッチャーとotherの両方に一致するすべての文字にマッチする、新しいマッチャーを返します。 2sta

  2. JavaのCharacterクラスとは?主要メソッドと使い方を実例付きで解説

    JavaのCharacterクラスは、プリミティブ型 char の値をオブジェクトとしてラップ(包み込む)ためのラッパークラスです。Characterクラスのオブジェクトは、char 型の値を1つだけ格納する単一のフィールドを持っています。 コレクションやジェネリクスなど、オブジェクトしか扱えない場面で char の値を使いたい場合に、このクラスが役立ちます。また、文字が英字か数字かを判定するユーティリティメソッドも数多く提供されています。 Characterクラスの主なメソッド 以下に、Characterクラスでよく使われるメソッドを紹介します。 修飾子と型メソッドと説明 stati