Javaの正規表現における\wメタ文字の使い方を徹底解説
Javaの正規表現で使用されるサブ式(メタ文字)「\w」は、単語構成文字にマッチします。具体的には、半角英小文字(a〜z)、半角英大文字(A〜Z)、および半角数字(0〜9)が該当します。
サンプルコード1:パターンにマッチした回数をカウントする
次の例では、正規表現「\w to」を使い、入力文字列の中にこのパターンが何回出現するかをカウントして表示します。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String args[]) {
String regex = "\\w to";
String input = "Hello how are you welcome to Tutorialspoint";
// Patternオブジェクトの生成
Pattern p = Pattern.compile(regex);
// Matcherオブジェクトの生成
Matcher m = p.matcher(input);
int count = 0;
while (m.find()) {
count++;
}
System.out.println("マッチ数: " + count);
}
}実行結果
マッチ数: 1
入力文字列中の「welcome to」の部分で、「to」の直前に単語構成文字(e)が存在するため、パターン「\w to」が1回マッチしています。
サンプルコード2:単語構成文字を含む文字列を抽出する
次の例では、キーボードから5つの文字列を読み込み、そのうち単語構成文字を含む文字列のみを出力します。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchWordCharacters {
public static void main(String args[]) {
String regex = "\\w.*$";
Scanner sc = new Scanner(System.in);
System.out.println("5つの文字列を入力してください:");
String input[] = new String[5];
for (int i = 0; i < 5; i++) {
input[i] = sc.nextLine();
}
// Patternオブジェクトの生成
Pattern p = Pattern.compile(regex);
System.out.println("単語構成文字を含む文字列:");
for (int i = 0; i < 5; i++) {
// Matcherオブジェクトの生成
Matcher m = p.matcher(input[i]);
if (m.matches()) {
System.out.println(m.group());
}
}
}
}実行結果
5つの文字列を入力してください: sample test test23 hello## #$%&& 単語構成文字を含む文字列: sample test test23 hello##
解説のポイント
- 「sample」「test」「test23」「hello##」は、先頭が英字であるためパターン「\w.*$」にマッチし、出力されます。
- 一方「#$%&&」は記号のみで構成されており、単語構成文字(\w)が含まれないため、マッチせずに出力から除外されます。
- なお、Javaの文字列リテラル内で正規表現を記述する際は、バックスラッシュをエスケープする必要があるため、「\\w」と記述する点に注意してください。
-
Java正規表現のメタ文字「.(ドット)」の使い方を徹底解説
Javaの正規表現におけるメタ文字「.(ドット)」は、改行文字を除く任意の1文字にマッチする特殊な記号です。この記事では、ドットメタ文字の基本的な動作と、実際のコード例を使った具体的な使い方をわかりやすく解説します。 ドット(.)メタ文字の基本 正規表現のサブ式である「.」は、改行(\n)以外のあらゆる単一文字に一致します。英字・数字・記号・空白など、種類を問わず1文字としてカウントされるため、パターンの柔軟な指定に非常に便利です。 例1:任意の1文字とのマッチ数を数える 次のJavaプログラムでは、パターン「.」を使って入力文字列内の各文字がいくつマッチするかをカウントしています。空白も1文
-
Javaの正規表現における$(ドル)メタ文字の使い方
正規表現におけるサブ表現(メタ文字)「$」は、行の末尾に一致します。パターンの最後に「$」を置くことで、指定した文字列で終わるテキストだけをマッチさせることができます。なお、デフォルトでは「$」は入力全体の末尾に一致しますが、Pattern.MULTILINEフラグを有効にすると、行区切り文字(改行など)の直前にも一致するようになります。例1:行末の一致を確認する次のJavaプログラムでは、「Tutorialspoint」という文字列で終わる入力に対して、正規表現「Tutorialspoint$」が何回一致するかを数えています。import java.util.regex.Matcher; i