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

【Java】正規表現の\Aメタ文字とは?文字列の先頭にマッチさせる方法を解説

\Aメタ文字とは

Javaの正規表現におけるメタ文字「\A」は、入力文字列全体の先頭にマッチします。よく使われる「^」と似ていますが、「^」はMULTILINEモード有効時に各行の先頭にもマッチするのに対し、「\A」はモードに関係なく常に文字列全体の先頭だけにマッチする点が異なります。

例1:文字列の先頭をマッチさせる

次のJavaプログラムでは、パターン「\AHi」を使って、入力文字列の先頭に「Hi」という文字列があるかどうかを確認しています。

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

public class RegexExample {
   public static void main(String args[]) {
      String regex = "\\AHi";
      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

「Hi」が文字列の途中や末尾に現れた場合はマッチしません。この結果から、「\A」が文字列全体の先頭にのみ作用することがわかります。

例2:ASCII文字のみで構成されているかを検証する

次のJavaプログラムは、ユーザーから文字列を入力として受け取り、その文字列がASCII文字のみで構成されているかどうかを検証します。パターン「\A\p{ASCII}*\z」は、「文字列の先頭(\A)から末尾(\z)までがすべてASCII文字である」ことを意味します。

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

public class StartingOfInput {
   public static void main(String args[]) {
      String regex = "\\A\\p{ASCII}*\\z";
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter the input string: ");
      String input = sc.nextLine();
      // Patternオブジェクトの生成
      Pattern p = Pattern.compile(regex);
      // Matcherオブジェクトの生成
      Matcher m = p.matcher(input);
      if(m.find()) {
         System.out.println("Given input contains only ASCII characters");
      } else {
         System.out.println("Given input contains non-ASCII characters");
      }
   }
}

出力1

Enter the input string:
What is your name
Given input contains only ASCII characters

入力された文字列がすべてASCII文字で構成されているため、「ASCII文字のみを含む」と判定されます。

出力2

Enter the input string:
whÿ do we fall
Given input contains non-ASCII characters

この場合、入力に非ASCII文字(ÿ)が含まれているため、パターンはマッチせず、「非ASCII文字を含む」と判定されます。

まとめ

「\A」は文字列全体の先頭にマッチするメタ文字です。「^」との違いを理解した上で、入力値のバリデーションやフォーマットチェックなどに活用すると、より堅牢な文字列処理を実装できます。

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

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

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

    正規表現におけるサブ式(メタ文字)「^」は、行の先頭にマッチします。この記号を正規表現の中で使用すると、入力文字列の中でその後に続くパターンが行頭から始まる場合に一致とみなされます。 例1:行頭のパターンにマッチするか確認する 次のサンプルコードでは、入力文字列が「Hi how are you」というフレーズで始まっているかどうかを「^」を使って判定しています。 import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExample { public static void m