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

Java正規表現で単語の境界(\b)を一致させる方法をわかりやすく解説

Javaの正規表現では、メタ文字「\b」を使用することで、単語の境界(ワードバウンダリ)を一致させることができます。

「\b」は、単語構成文字(英字・数字・アンダースコア)と非単語構成文字(空白や記号など)の間にある位置にマッチします。この性質を利用すると、文字列内の単語数のカウントや、各単語の先頭文字の抽出などを簡単に実装できます。

例1:単語の境界の数をカウントする

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("Enter a String");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        String regex = "\\b";
        // 正規表現をコンパイルする
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトを取得する
        Matcher matcher = pattern.matcher(input);
        int count = 0;
        while(matcher.find()) {
            count++;
        }
        System.out.println("Number of word boundaries: "+count);
    }
}

このプログラムでは、ユーザーが入力した文字列に対して正規表現「\b」を適用し、マッチした回数(=単語の境界の数)をカウントして表示します。

出力

Enter a String
this is a sample text
Number of word boundaries: 10

「this is a sample text」は5つの単語で構成された文字列ですが、各単語の前後に境界が存在するため、合計10個の単語境界が検出されます。

例2:各単語の先頭文字を抽出する

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FirstLetterExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter sample text: ");
        String data = sc.nextLine();
        String regex = "\\b[a-zA-Z]";
        // Patternオブジェクトを作成する
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトを作成する
        Matcher matcher = pattern.matcher(data);
        System.out.println("First letter of each word from the given string: ");
        while(matcher.find()) {
            System.out.print(matcher.group()+" ");
        }
    }
}

正規表現「\b[a-zA-Z]」は、「単語の境界に続く1文字の英字」にマッチします。つまり、文字列内の各単語の最初の文字だけを取り出すことができます。

出力

Enter sample text:
National Intelligence Agency Research & Analysis Wing
First letter of each word from the given string:
N I A R A W

このように、「\b」と文字クラスを組み合わせることで、単語の先頭文字の抽出だけでなく、特定の単語の検索や置換など、さまざまなテキスト処理に応用できます。

  1. Javaの正規表現でMM/DD/YYYY形式の日付を検証する方法

    Java の java.util.regex パッケージには、文字シーケンスの中から特定のパターンを見つけ出すためのさまざまなクラスが用意されています。 このパッケージの中心となる Pattern クラスは、正規表現をコンパイルした結果を表すクラスです。文字列と正規表現のマッチングを行う際には、主に次の2つのメソッドを使用します。 compile() — 正規表現を表す文字列を受け取り、コンパイル済みの Pattern オブジェクトを返します。 matcher() — 検証対象の文字列を受け取り、現在の Pattern オブジェクトが表すパターンと照合するための Matcher オブジェクト

  2. Javaの正規表現を使って文字列からHTMLタグを抽出する方法

    Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。 このパッケージのPatternクラスは、正規表現をコンパイルした結果を表すクラスです。文字列と正規表現のマッチングを行うために、次の2つのメソッドが提供されています。 compile() − 正規表現を表す文字列を引数として受け取り、Patternクラスのオブジェクトを返します。 matcher() − 対象となる文字列を受け取り、その文字列を現在のPatternオブジェクトが表すパターンと照合するためのMatcherオブジェクトを生成します。