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

【Java正規表現】文字クラス\p{javaLowerCase}で小文字を判定・抽出する方法


文字クラス \p{javaLowerCase} は、小文字にマッチするための文字クラスです。このクラスは、java.lang.Character クラスの isLowerCase() メソッドに引数として渡したときに true を返す文字と一致します。つまり、「a」〜「z」だけでなく、Unicode 上で小文字とみなされる他言語の文字にも対応しています。

例1:入力文字列に含まれる小文字の数をカウントする

次のサンプルプログラムでは、ユーザーが入力した文字列に含まれる小文字の個数を数えて表示します。正規表現 [\p{javaLowerCase}] を Pattern.compile() メソッドでコンパイルし、Matcher オブジェクトを使って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();
        // 正規表現の定義
        String regex = "[\\p{javaLowerCase}]";
        // 正規表現をコンパイルしてPatternオブジェクトを作成
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトを取得
        Matcher matcher = pattern.matcher(input);
        int count = 0;
        while(matcher.find()) {
            count++;
        }
        System.out.println("Number of lower case characters: "+count);
    }
}

実行結果

Enter a string
This IS A sample TExt
Number of lower case characters: 11

この実行例では、入力された文字列「This IS A sample TExt」の中に小文字が11個含まれていることがわかります。

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

次のサンプルプログラムでは、5つの入力文字列の中から、すべての文字が小文字であるものだけを抽出して表示します。正規表現 ^\p{javaLowerCase}+$ は「先頭から末尾まですべての文字が小文字であること」を表しており、matches() メソッドによって文字列全体との一致を判定しています。

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{javaLowerCase}+$";
        // 入力データの取得
        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 lower 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 lower case characters:
rahman
radha

このように、「rahman」「radha」のようにすべての文字が小文字で構成された入力だけが出力されました。一方、「Raju」「SUnDar*」のように大文字や記号が含まれる文字列は条件を満たさないため除外されます。


  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