正規表現

正規表現で「^(ハット,キャレット)」は文頭・行頭 | [^ ]は否定

正規表現でハットは文頭

「^(ハット,キャレット)」は文頭・行頭

正規表現において「^(ハット,キャレット)」は文頭・行頭を表します。正規表現の最初に配置して行の頭から一致するパターンに絞り込みます。ただし環境によっては全文の最初(改行は文の一部という扱い)になるケースもあります。

// 文頭に「リザードン」が書いてあるパターンのみヒットさせたい
^リザードン.*

// 検索対象
リザードンウツドンサイドンヤドン // ヒット
ウツドンサイドンヤドンリザードン // ヒットせず
サイドンヤドンリザードンウツドン // ヒットせず
ヤドンリザードンウツドンサイドン // ヒットせず

「$(ドル)」は文末・行末

正規表現において「$(ドル)」は文末・行末を表します。正規表現の最後に配置して行の最後から一致するパターンに絞り込みます。

// 文末に「リザードン」が書いてあるパターンのみヒットさせたい
.*リザードン$

// 検索対象
リザードンウツドンサイドンヤドン // ヒットせず
ウツドンサイドンヤドンリザードン // ヒット
サイドンヤドンリザードンウツドン // ヒットせず
ヤドンリザードンウツドンサイドン // ヒットせず

「^」と「$」は同時に使われることが多い

正規表現で指定する際「^」と「$」は同時に使われることが多いです。行頭や行末に意図しない文字が含まれていた場合に除外できるのが強みです。

// 日付のみ入っている行を取得したい
^\d{4}\/\d{2}\/\d{2}$

// 検索対象
2024/02/01  // ヒット
2024/02/02(火) //ヒットせず
2024/02/03  // ヒット
西暦2024/02/04 // ヒットせず

「[^ ]」は文字クラス内での否定

「^」は文字クラス「[ ]」の中に設置された場合は「[ ]」内の他文字を否定するという意味を持ちます。たとえば「[^ABC]」と書いてあった場合は、ABC以外の1文字を表します。

// 「ラリルレロ」を含まない文字列を探したい
^[^ラリルレロ]+$

// 検索対象
ヒトカゲ   //ヒット
リザード // ヒットせず
リザードン // ヒットせず

「^」のエスケープは「\^」

たんに文字としての「^」を使いたい場合には、「\(バックスラッシュ)」を用いてエスケープする必要があります。「^」はそのまま使うと文頭を表してしまうため「これは文頭ではないですよ〜」と正規表現に伝える際は「\^」と表現します。

// 「^」をエスケープする
.+\^.+

// 検索対象
2^3 // ヒット
(^-^) // ヒット