正規表現のアンカー — ^、$、\b 単語境界の解説
正規表現のアンカーをマスター:^ は文字列の先頭、$ は文字列の末尾、\b は単語境界、\B は非単語境界。パターンがマッチする位置を制御します。
Anchors
詳細な説明
正規表現のアンカーと境界
アンカーは文字にマッチするのではなく、文字列内の位置にマッチします。パターンが正しい位置でマッチすることを保証します。
先頭と末尾のアンカー
| アンカー | 位置 |
|---|---|
^ |
文字列の先頭(m フラグでは行の先頭) |
$ |
文字列の末尾(m フラグでは行の末尾) |
アンカーなしでは、\d+ は文字列のどこでも数字にマッチします。アンカー付きの ^\d+$ は文字列全体が数字の場合のみマッチします。
複数行モード
m フラグを使うと、^ と $ は文字列全体ではなく各行の先頭と末尾にマッチします:
Input: "line 1\nline 2\nline 3"
Pattern: ^line(m フラグ付き)
Matches: 各行の先頭の "line"(3マッチ)
単語境界 \b
\b アンカーは単語文字(\w)と非単語文字(\W)の境界、または単語文字と文字列の先頭/末尾の間にマッチします。
Pattern: \bword\b
Matches: "a word here" の "word"
Skips: "sword", "wordy", "keyword"
これはサブストリングに誤ってマッチすることなく、単語全体にマッチさせるのに非常に役立ちます。
非単語境界 \B
\B は単語境界ではない位置にマッチします。単語の内部にマッチします。
Pattern: \Bword
Matches: "sword" の "word"(単語内部)
Skips: 文字列の先頭の "word"
よく使うアンカーパターン
^$— 空文字列または空行にマッチ^\s*$— 空白行(空白のみ)にマッチ\b\w{5}\b— 正確に5文字の単語にマッチ^(?!#).*$—#で始まらない行にマッチ(mフラグ付き)
ユースケース
入力全体がパターン(電話番号や郵便番号など)にマッチすることを検証する、サブストリングにマッチせずに単語全体を見つける、または複数行モードでテキストを行ごとに処理する必要がある場合。