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

Java正規表現のメタ文字「^(キャレット)」の使い方を解説

正規表現におけるサブ式(メタ文字)「^」は、行の先頭にマッチします。この記号を正規表現の中で使用すると、入力文字列の中でその後に続くパターンが行頭から始まる場合に一致とみなされます。

例1:行頭のパターンにマッチするか確認する

次のサンプルコードでは、入力文字列が「Hi how are you」というフレーズで始まっているかどうかを「^」を使って判定しています。

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

public class RegexExample {
    public static void main(String args[]) {
        String regex = "^Hi how are you";
        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: 1

例2:数字で始まる文字列を抽出する

次のJavaプログラムは、ユーザーから5つの文字列を受け取り、そのうち数字で始まる文字列だけを出力します。正規表現 ^[0-9].*$ を使うことで、先頭が0〜9のいずれかの数字である文字列を厳密に判定できます。

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

public class StartingwithDigit {
    public static void main(String args[]) {
        String regex = "^[0-9].*$";
        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("Strings starting with digits: ");
        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:
sample string 1
sample string 2
11 sample string 3
22 sample string 4
43534 56353 636
Strings starting with digits:
11 sample string 3
22 sample string 4
43534 56353 636

補足:「^」を使う際の注意点

  • デフォルトでは「^」は入力文字列全体の先頭にのみマッチします。Pattern.MULTILINE フラグを有効にすると、改行で区切られた各行の先頭にもマッチするようになります。
  • 文字クラス内(例:[^0-9])で使用した場合は意味が変わり、「指定した文字以外」を表す否定の役割になります。
  • 行末にマッチさせるには「$」を使用します。「^」と「$」を組み合わせることで、文字列全体が特定のパターンに完全一致するかどうかを確実にチェックできます。
  1. Java正規表現のメタ文字「.(ドット)」の使い方を徹底解説

    Javaの正規表現におけるメタ文字「.(ドット)」は、改行文字を除く任意の1文字にマッチする特殊な記号です。この記事では、ドットメタ文字の基本的な動作と、実際のコード例を使った具体的な使い方をわかりやすく解説します。 ドット(.)メタ文字の基本 正規表現のサブ式である「.」は、改行(\n)以外のあらゆる単一文字に一致します。英字・数字・記号・空白など、種類を問わず1文字としてカウントされるため、パターンの柔軟な指定に非常に便利です。 例1:任意の1文字とのマッチ数を数える 次のJavaプログラムでは、パターン「.」を使って入力文字列内の各文字がいくつマッチするかをカウントしています。空白も1文

  2. Javaの正規表現における$(ドル)メタ文字の使い方

    正規表現におけるサブ表現(メタ文字)「$」は、行の末尾に一致します。パターンの最後に「$」を置くことで、指定した文字列で終わるテキストだけをマッチさせることができます。なお、デフォルトでは「$」は入力全体の末尾に一致しますが、Pattern.MULTILINEフラグを有効にすると、行区切り文字(改行など)の直前にも一致するようになります。例1:行末の一致を確認する次のJavaプログラムでは、「Tutorialspoint」という文字列で終わる入力に対して、正規表現「Tutorialspoint$」が何回一致するかを数えています。import java.util.regex.Matcher; i