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

Java正規表現で単語全体に一致させる方法:\b(単語境界)メタ文字の使い方


Javaの正規表現において、メタ文字「\b」は単語境界に一致します。具体的には、最初の単語文字の直前、最後の単語文字の直後、そして単語文字と非単語文字の間に一致します。

そのため、特定の単語全体に一致させたい場合は、対象となる単語を前後から単語境界メタ文字で囲む必要があります。

\btest\b

このパターンを使うことで、「test」という単語だけを正確に検出でき、「testing」や「contest」のように「test」が部分文字列として含まれる単語は誤って一致しなくなります。

サンプルコード

以下のJavaプログラムは、入力された文字列の中に「test」という単語が何回出現するかをカウントして表示する例です。

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("入力テキストを入力してください:");
        String input = sc.nextLine();

        // 単語境界を使った正規表現パターン
        String regex = "\\btest\\b";

        // Patternオブジェクトを作成
        Pattern pattern = Pattern.compile(regex);

        // コンパイルしたパターンを文字列に対してマッチング
        Matcher matcher = pattern.matcher(input);

        int count = 0;
        while (matcher.find()) {
            count++;
        }

        System.out.println("単語 test の出現回数:" + count);
    }
}

実行結果

入力テキストを入力してください:
sample data: test test test
単語 test の出現回数:3

ポイント解説

  • 「\\b」について: Javaの文字列リテラル内では、バックスラッシュ自体がエスケープされるため、正規表現の「\b」を表すには「\\b」と記述します。
  • PatternクラスとMatcherクラス: Pattern.compile()で正規表現をコンパイルし、matcher()メソッドで対象文字列とのマッチングを行います。
  • find()メソッド: マッチする箇所を順番に検索し、見つかるたびにtrueを返します。whileループと組み合わせることで出現回数をカウントできます。
  1. Javaの正規表現におけるサブ式(グループ化)の使い方

    Javaの正規表現において、サブ式(メタ文字)( )は、複数の正規表現をひとつのグループにまとめ、マッチしたテキストを記憶する働きを持ちます。グループ化を活用すると、選択(|)の適用範囲を限定したり、マッチした一部分の文字列を後から取り出したりできるようになります。 例1:基本的なグループ化 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String args[]) { String input =

  2. Javaの正規表現で文字列から数値を抽出する方法

    Javaの正規表現(Regular Expression)を使えば、文字列の中から数値だけを簡単に取り出すことができます。この記事では、実際のコード例とともに、さまざまなパターンでの数値抽出の方法を解説します。文字列を解析し、必要な情報を抜き出すスキルは、テスターにとって欠かせない能力の一つです。特にAPIテストでは、JSONやXML形式のレスポンスを解析する場面が多く、正規表現の知識が大いに役立ちます。以下では、Javaの正規表現を使って文字列から数字・数値を抽出する具体的な例を紹介します。文字列からすべての数値を抽出するimport java.util.regex.Matcher; imp