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」と文字クラスを組み合わせることで、単語の先頭文字の抽出だけでなく、特定の単語の検索や置換など、さまざまなテキスト処理に応用できます。
-
Javaの正規表現でMM/DD/YYYY形式の日付を検証する方法
Java の java.util.regex パッケージには、文字シーケンスの中から特定のパターンを見つけ出すためのさまざまなクラスが用意されています。 このパッケージの中心となる Pattern クラスは、正規表現をコンパイルした結果を表すクラスです。文字列と正規表現のマッチングを行う際には、主に次の2つのメソッドを使用します。 compile() — 正規表現を表す文字列を受け取り、コンパイル済みの Pattern オブジェクトを返します。 matcher() — 検証対象の文字列を受け取り、現在の Pattern オブジェクトが表すパターンと照合するための Matcher オブジェクト
-
Javaの正規表現を使って文字列からHTMLタグを抽出する方法
Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。 このパッケージのPatternクラスは、正規表現をコンパイルした結果を表すクラスです。文字列と正規表現のマッチングを行うために、次の2つのメソッドが提供されています。 compile() − 正規表現を表す文字列を引数として受け取り、Patternクラスのオブジェクトを返します。 matcher() − 対象となる文字列を受け取り、その文字列を現在のPatternオブジェクトが表すパターンと照合するためのMatcherオブジェクトを生成します。