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

Javaの正規表現(RegEx)で空白文字にマッチさせる方法

Javaの正規表現におけるメタ文字「\s」は、指定された文字列内の空白文字(スペース、タブ、改行など)にマッチします。この記事では、「\s」を使って空白文字を検出・処理する具体的な方法を2つのサンプルコードとともに解説します。

例1:文字列中の空白文字の数をカウントする

次の例では、ユーザーから入力された文字列に対して正規表現「\s」を適用し、Matcherクラスのfind()メソッドを使って空白文字の出現回数を数えています。

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 = "\\s";
        // 正規表現をコンパイル
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトを取得
        Matcher matcher = pattern.matcher(input);
        int count = 0;
        while(matcher.find()) {
            count++;
        }
        System.out.println("空白文字の数: "+count);
    }
}

実行結果

文字列を入力してください
Hello how are you welcome to tutorialspoint
空白文字の数: 6

入力された文字列「Hello how are you welcome to tutorialspoint」には6つの半角スペースが含まれているため、出力は「6」となります。

例2:正規表現を使って空白文字をすべて削除する

「\s+」のようにプラス記号(+)を組み合わせると、「1つ以上の連続する空白文字」にマッチします。replaceAll()メソッドと併用すれば、文字列から空白を一括して取り除くことができます。

import java.util.Scanner;
public class RegexExample {
    public static void main( String args[] ) {
        // 正規表現
        String regex = "\\s+";
        System.out.println("入力値を入力してください:");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        String result = input.replaceAll(regex, "");
        System.out.println("結果: "+result);
    }
}

実行結果

入力値を入力してください:
hello how are you
結果: hellohowareyou

まとめ

メタ文字「\s」は単独の空白文字にマッチし、「\s+」は1つ以上の連続した空白文字にマッチします。Patternクラスで正規表現をコンパイルし、Matcherクラスでマッチング処理を行うのがJavaの基本的な使い方です。空白のカウントや削除以外にも、文字列の分割(split)やフォーマットの検証など、さまざまな場面で活用できるので、ぜひ覚えておきましょう。

  1. Java正規表現(Regex)で固定文字セットにマッチさせる方法

    Javaの正規表現における文字クラスを使うと、あらかじめ定義しておいた固定の文字集合の中から「任意の1文字」にマッチさせることができます。たとえば、次のように記述します。 [tmp]:t、m、p のいずれか1文字にマッチします。 [^tp]:t と p 以外の任意の1文字にマッチします(先頭に ^ を付けると否定を意味します)。 角括弧 [ ] 内に候補となる文字を列挙すると、入力文字列の各位置についてその中のどれか1つが存在すればマッチが成立します。この仕組みを利用すると、「特定の文字が文字列内に何回出現するか」を簡単に数えることができます。 例1:指定した文字の出現回数をカウントする

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

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