行頭と行末を表す
前の記事では、文字そのものを表す『非メタ文字』について説明しました。 この記事では、『メタ文字』である ^(キャレット) と $(ドル記号) について説明します。
^ $
『メタ文字』とは、特別な意味を与えられた文字のことです。 例えば、ここで紹介する ^(キャレット) は行頭を表し、同様に $(ドル記号) は行末を表します。
なお、この記事でも以下のテキストを例に操作を説明します。
- hello 2014
- vi editor
- vi editor.
- vi editor
- vim Editor
- Vim Editor
- a
- aa
- aaa
- aaaa
- aaaaa
- .
- *
- ^
- $
- /
- \
- [
- ]
- <
- >
- {
- }
行頭を表す ^(キャレット) と行末を表す $(ドル記号)
正規表現では、^(キャレット) は行頭を表し、$(ドル記号) は行末を表します。 これらのメタ文字を使用することで、『"vi editor" で終わる行を検索する』というような検索が可能になります。
なお、行頭とは行の先頭のことであり、行の最初の文字のことではありません。 同様に、行末は行の末尾のことであり、行の最後の文字のことではありません。 つまり、行頭も行末も見える文字のことではありません。
では、実際に ^(キャレット) と $(ドル記号) を含めたテキスト検索を実施してみましょう。

上図のように文字カーソルは文書の先頭にあると仮定して説明を始めます。
まずは、行頭を検索してみましょう。
では、キーボードから /^<Enter> を入力してください。
/^<Enter>

上図のように文字カーソルが2行目の行頭に移動します。
このように、^(キャレット) を検索テキストに指定することで、行頭が検索されます。
さらに、順方向の次の一致へ移動してみましょう。
キーボードから n を入力してください。
n

上図のように文字カーソルが3行目の行頭に移動します。
さらに、順方向の次の一致へ移動します。
キーボードから n を入力してください。
n

上図のように文字カーソルが4行目の行頭に移動します。
4行目は空行ですが、このように検索に一致しました。 上で説明したように、行頭とは行の先頭のことであり、行の最初の文字のことではありません。 そのため、^(キャレット)での検索は、空行にも一致します。
ではここで、文字カーソルを文書の先頭へ移動しておきましょう。

上図のように文書の先頭へ移動してください。
続いて、行末にある "vi editor" を検索してみましょう。
では、キーボードから /vi editor$<Enter> を入力してください。
/vi editor$<Enter>

上図のように文字カーソルが2行目の "vi editor" の位置に移動します。
このように、検索テキストの最後に $(ドル記号) 指定することで、行末にあるテキストが検索されます。
さらに、順方向の次の一致へ移動してみましょう。
キーボードから n を入力してください。
n

上図のように文字カーソルが5行目の "vi editor" の位置に移動します。
3行目にも "vi editor" というテキストがありますが、検索には一致しませんでした。 これは、3行目の "vi editor" の行は、.(ピリオド) で終わっているためです。





