導入
^ は「行の先頭」、$ は「行の末尾」を表します。これらは文字ではなく 位置 にマッチする特別な記号で、アンカー(錨)と呼ばれます。「行の先頭が数字で始まる」「末尾が .txt で終わる」といった条件を書けます。
説明
アンカーは幅を持たない「位置」を指す点がポイントです。
パターン: ^Error 対象: Error: 失敗 → 行頭の "Error" にマッチ
パターン: ^Error 対象: 致命的Error → マッチしない(行頭でないため)
パターン: 円$ 対象: 1000円 → 行末の "円" にマッチ
^ と $ の両方で挟むと「文字列全体がぴったりこの形か」を検査できます。入力チェック(バリデーション)の定番です。
パターン: ^\d{3}-\d{4}$ 対象: 100-0001 → マッチ(全体が郵便番号の形)
パターン: ^\d{3}-\d{4}$ 対象: 〒100-0001 → マッチしない(先頭に余計な文字)
^\d{3}-\d{4}$ は「先頭から末尾まで、まるごと郵便番号の形でなければならない」という意味になります。アンカーを付けないと「文字列のどこかに含まれていればOK」になるので、全体一致を求めるときは ^ ... $ で挟む のが鉄則です。
複数行モードでの
^ $^ $は通常「文字列全体の先頭・末尾」を指しますが、「複数行モード」を有効にすると「各行の先頭・末尾」に変わります。モードの指定は第5章で扱います。
やってみよう
^(先頭)と $(末尾)は「位置」を表す、と覚えましょう。入力チェックでは ^パターン$ と挟んで「全体がこの形か」を調べるのが定石です。