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

【Java】Patternクラスと\b(単語境界)で文字列内の特定の単語を照合する方法

Javaの正規表現における\bメタ文字は「単語境界」にマッチします。入力テキストから特定の単語を見つけたい場合は、正規表現の中で目的の単語を単語境界で囲んで指定します。

"\\b検索したい単語\\b";

\b(単語境界)とは

\bは、単語文字(英数字やアンダースコアなど)とそれ以外の文字との境界位置にマッチするメタ文字です。この指定により、「hello」を検索した際に「helloworld」のような部分一致を除外し、独立した単語としての「hello」だけを正確に検出できます。

例1:ユーザー入力から単語を検索する

次の例では、Scannerを使ってユーザーから文字列を読み込み、その中に「hello」という単語が含まれているかどうかを判定しています。

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

public class MatchingWordExample1 {
    public static void main(String args[]) {
        // 文字列の読み込み
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter input string");
        String input = sc.next();
        // 特定の単語を検索する正規表現
        String regex = "\\bhello\\b";
        // 正規表現のコンパイル
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトの取得
        Matcher matcher = pattern.matcher(input);
        if (matcher.find()) {
            System.out.println("Match found");
        } else {
            System.out.println("Match not found");
        }
    }
}

実行結果

Enter input string
hello welcome to Tutorialspoint
Match found

例2:複数行テキストから単語を検索する

次の例では、改行を含む複数行の文字列の中から「second」という単語を検索しています。find()メソッドは文字列全体を対象に順番に走査するため、改行を含むテキストでも問題なく単語を検出できます。

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

public class MatcherExample2 {
    public static void main(String args[]) {
        String input = "This is sample text \n "
                + "This is second line "
                + "This is third line";
        String regex = "\\bsecond\\b";
        // 正規表現のコンパイル
        Pattern pattern = Pattern.compile(regex);
        // Matcherオブジェクトの取得
        Matcher matcher = pattern.matcher(input);
        if (matcher.find()) {
            System.out.println("Match found");
        } else {
            System.out.println("Match not found");
        }
    }
}

実行結果

Match found

まとめ

Javaで特定の単語を照合する基本の手順は以下の通りです。

  • Pattern.compile():正規表現をコンパイルしてPatternオブジェクトを生成する
  • pattern.matcher():対象の文字列に対してMatcherオブジェクトを取得する
  • find():パターンに一致する部分が存在するかどうかを判定する

検索したい単語を\bで挟むことで、文字列の一部として偶然含まれるケースを排除し、単語単位の正確なマッチングが可能になります。ログ解析やテキスト処理など、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。

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

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

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

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