- Home ›
- Java正規表現の使い方 ›
- 位置の指定 ›
- HERE
文字列の先頭(¥A)
文字列の先頭の位置にマッチするパターンを記述するにはメタ文字の1つである"¥A"を使います。
書式は次の通りです。
"¥Aパターン"
パターンには"¥A"を除いたパターンを記述します。
"^"が行の先頭にマッチしたのに対して"¥A"は文字列の先頭にマッチします。その為、ターゲット文字列の中に行末文字が含まれていてもいなくても、常に文字列の先頭位置にだけマッチします。
具体的な例で考えてみます。"abc def"と"def abc"と言う2つの文字列に対してパターンを"abc"と指定した場合にはどちらの文字列にも"abc"は含まれているため、どちらもマッチします。
○ abc def ○ def abc
これに対してパターンを"¥Aabc"と記述した場合は、文の先頭に位置に"abc"がある場合だけマッチします。よって"abc def"にはマッチしますが"def abc"にはマッチしません。
○ abc def
× def abc
また"^"と異なりマルチラインモードになっている場合でも文字列の先頭にしかマッチしません。
× def¥nabc
具体的には次のように記述します。
String str = "abc def"; String regex = "¥¥Aabc"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(str); if (m.find()){ System.out.println("マッチしました"); }else{ System.out.println("マッチしません"); }
上記の場合はマッチします。
サンプルプログラム
では実際に試してみます。
import java.util.regex.Pattern; import java.util.regex.Matcher; class JSample3_1{ public static void main(String args[]){ String str1 = "abc def"; String str2 = "def abc"; String str3 = "def¥nabc"; String regex = "¥¥Aabc"; Pattern p = Pattern.compile(regex); System.out.println("パターン : " + regex); check(p, str1); check(p, str2); check(p, str3); } private static void check(Pattern p, String target){ Matcher m = p.matcher(target); if (m.find()){ System.out.println("○ " + target); }else{ System.out.println("× " + target); } } }
ではコンパイルを行った上で実行してみます。
( Written by Tatsuo Ikura )