Java正規表現のメタ文字「.(ドット)」の使い方を徹底解説
Javaの正規表現におけるメタ文字「.(ドット)」は、改行文字を除く任意の1文字にマッチする特殊な記号です。この記事では、ドットメタ文字の基本的な動作と、実際のコード例を使った具体的な使い方をわかりやすく解説します。
ドット(.)メタ文字の基本
正規表現のサブ式である「.」は、改行(\n)以外のあらゆる単一文字に一致します。英字・数字・記号・空白など、種類を問わず1文字としてカウントされるため、パターンの柔軟な指定に非常に便利です。
例1:任意の1文字とのマッチ数を数える
次のJavaプログラムでは、パターン「.」を使って入力文字列内の各文字がいくつマッチするかをカウントしています。空白も1文字として扱われる点に注目してください。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchesAll {
public static void main( String args[] ) {
String regex = ".";
String input = "Hi how are you welcome to Tutorialspoint";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
int count = 0;
while(m.find()) {
count++;
}
System.out.println("Number of matches: "+count);
}
}
実行結果
Number of matches: 40
入力文字列は40文字(空白を含む)なので、40回のマッチが検出されました。
例2:「e」で終わる4文字の単語を抽出する
次のプログラムでは、ユーザーから5つの文字列を受け取り、そのうち「e」で終わる4文字の単語だけを出力します。パターン「...e」は、ドット3つ(任意の3文字)+「e」という意味になります。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main( String args[] ) {
String regex = "...e";
Scanner sc = new Scanner(System.in);
System.out.println("Enter 5 input strings: ");
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("four letter words that ends with e: ");
for(int i=0; i<5;i++) {
//Matcherオブジェクトの生成
Matcher m = p.matcher(input[i]);
if(m.matches()) {
System.out.println(m.group());
}
}
}
}
実行結果
Enter 5 input strings: hive sample wife life naive four letter words that ends with e: hive wife life
この例では、「hive」「wife」「life」の3つが条件(4文字かつ末尾が「e」)に合致したため出力されています。「sample」(6文字)や「naive」(5文字)は文字数が異なるため、matches()メソッドによる完全一致の判定では除外されます。
まとめ
- メタ文字「.」は改行以外の任意の1文字にマッチする。
- 「...e」のように組み合わせることで、特定のパターンを持つ文字列を柔軟に抽出できる。
- find()は部分一致、matches()は完全一致の判定に使われるため、用途に応じて使い分けることが重要。
-
Java正規表現のメタ文字「.(ドット)」の使い方を徹底解説
Javaの正規表現におけるメタ文字「.(ドット)」は、改行文字を除く任意の1文字にマッチする特殊な記号です。この記事では、ドットメタ文字の基本的な動作と、実際のコード例を使った具体的な使い方をわかりやすく解説します。 ドット(.)メタ文字の基本 正規表現のサブ式である「.」は、改行(\n)以外のあらゆる単一文字に一致します。英字・数字・記号・空白など、種類を問わず1文字としてカウントされるため、パターンの柔軟な指定に非常に便利です。 例1:任意の1文字とのマッチ数を数える 次のJavaプログラムでは、パターン「.」を使って入力文字列内の各文字がいくつマッチするかをカウントしています。空白も1文
-
Javaの正規表現における$(ドル)メタ文字の使い方
正規表現におけるサブ表現(メタ文字)「$」は、行の末尾に一致します。パターンの最後に「$」を置くことで、指定した文字列で終わるテキストだけをマッチさせることができます。なお、デフォルトでは「$」は入力全体の末尾に一致しますが、Pattern.MULTILINEフラグを有効にすると、行区切り文字(改行など)の直前にも一致するようになります。例1:行末の一致を確認する次のJavaプログラムでは、「Tutorialspoint」という文字列で終わる入力に対して、正規表現「Tutorialspoint$」が何回一致するかを数えています。import java.util.regex.Matcher; i