Javaの正規表現:メタ文字「\t」でタブ文字を扱う方法
正規表現における部分式(メタ文字)「\t」は、タブ文字(水平タブ)に一致します。JavaのPatternクラスとMatcherクラスを組み合わせることで、文字列内のタブを検出したり、置換したりすることができます。
例1:タブ文字の数をカウントする
次のサンプルコードでは、ユーザーが入力した文字列からタブ文字を検索し、その出現回数を数えて表示します。
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 = "\\t";
Scanner sc = new Scanner(System.in);
System.out.println("文字列を入力してください:");
String input = sc.nextLine();
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
int count = 0;
while(m.find()) {
count ++;
}
System.out.println("タブ文字の数:"+count);
}
}実行結果
文字列を入力してください: This is a sentence with tab spaces タブ文字の数:6
この例では、入力された文字列に含まれる6つのタブ文字がすべて検出され、カウント結果が出力されています。
例2:タブ文字を半角スペースに置換する
次のサンプルコードでは、MatcherクラスのreplaceAll()メソッドを使って、文字列内のすべてのタブ文字を半角スペースに置き換えています。
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 = "\\t";
Scanner sc = new Scanner(System.in);
System.out.println("文字列を入力してください:");
String input = sc.nextLine();
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
int count = 0;
String result = "";
while(m.find()) {
result = m.replaceAll(" ");
}
System.out.println("置換結果:"+result);
}
}実行結果
文字列を入力してください: This is a sentence with tab spaces 置換結果:This is a sentence with tab spaces
このように、「\t」メタ文字を使用することで、文字列中のタブ文字を簡単に検出・置換できます。なお、Javaの文字列リテラル内で正規表現を記述する場合は「\\t」とバックスラッシュをエスケープする必要がある点に注意しましょう。
-
Javaの正規表現における$(ドル)メタ文字の使い方
正規表現におけるサブ表現(メタ文字)「$」は、行の末尾に一致します。パターンの最後に「$」を置くことで、指定した文字列で終わるテキストだけをマッチさせることができます。なお、デフォルトでは「$」は入力全体の末尾に一致しますが、Pattern.MULTILINEフラグを有効にすると、行区切り文字(改行など)の直前にも一致するようになります。例1:行末の一致を確認する次のJavaプログラムでは、「Tutorialspoint」という文字列で終わる入力に対して、正規表現「Tutorialspoint$」が何回一致するかを数えています。import java.util.regex.Matcher; i
-
Java正規表現のメタ文字「^(キャレット)」の使い方を解説
正規表現におけるサブ式(メタ文字)「^」は、行の先頭にマッチします。この記号を正規表現の中で使用すると、入力文字列の中でその後に続くパターンが行頭から始まる場合に一致とみなされます。 例1:行頭のパターンにマッチするか確認する 次のサンプルコードでは、入力文字列が「Hi how are you」というフレーズで始まっているかどうかを「^」を使って判定しています。 import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExample { public static void m