トップ > 初級編 > その他 > 正規表現(初級編) >
行頭と行末

  

行頭と行末を表す

前の記事では、文字そのものを表す『非メタ文字』について説明しました。 この記事では、『メタ文字』である ^(キャレット) と $(ドル記号) について説明します

^
$

『メタ文字』とは、特別な意味を与えられた文字のことです。 例えば、ここで紹介する ^(キャレット) は行頭を表し、同様に $(ドル記号) は行末を表します。

なお、この記事でも以下のテキストを例に操作を説明します

  1. hello 2014
  2. vi editor
  3. vi editor.

  4. vi editor
  5. vim Editor
  6. Vim Editor
  7. a
  8. aa
  9. aaa
  10. aaaa
  11. aaaaa
  12. .
  13. *
  14. ^
  15. $
  16. /
  17. \
  18. [
  19. ]
  20. <
  21. >
  22. {
  23. }
 
  
3行目の先頭には、空白を1つ入れてあります。
  
4行目は空行です。
  
5行目の先頭には、空白を2つ入れてあります。

行頭を表す ^(キャレット) と行末を表す $(ドル記号)

正規表現では、^(キャレット) は行頭を表し、$(ドル記号) は行末を表します。 これらのメタ文字を使用することで、『"vi editor" で終わる行を検索する』というような検索が可能になります。

なお、行頭とは行の先頭のことであり、行の最初の文字のことではありません。 同様に、行末は行の末尾のことであり、行の最後の文字のことではありません。 つまり、行頭も行末も見える文字のことではありません。

では、実際に ^(キャレット) と $(ドル記号) を含めたテキスト検索を実施してみましょう。

文字カーソルは文書の先頭にある
文字カーソルは文書の先頭にある

上図のように文字カーソルは文書の先頭にあると仮定して説明を始めます

まずは、行頭を検索してみましょう。

では、キーボードから /^<Enter> を入力してください。

/^<Enter>
2行目の行頭へ移動する
2行目の行頭へ移動する

上図のように文字カーソルが2行目の行頭に移動します

このように、^(キャレット) を検索テキストに指定することで、行頭が検索されます。

さらに、順方向の次の一致へ移動してみましょう。

キーボードから n を入力してください。

n
3行目の行頭へ移動する
3行目の行頭へ移動する

上図のように文字カーソルが3行目の行頭に移動します

さらに、順方向の次の一致へ移動します。

キーボードから n を入力してください。

n
4行目の行頭へ移動する
4行目の行頭へ移動する

上図のように文字カーソルが4行目の行頭に移動します

4行目は空行ですが、このように検索に一致しました。 上で説明したように、行頭とは行の先頭のことであり、行の最初の文字のことではありません。 そのため、^(キャレット)での検索は、空行にも一致します。

ではここで、文字カーソルを文書の先頭へ移動しておきましょう

文字カーソルは文書の先頭にある
文字カーソルは文書の先頭にある

上図のように文書の先頭へ移動してください

続いて、行末にある "vi editor" を検索してみましょう。

では、キーボードから /vi editor$<Enter> を入力してください。

/vi editor$<Enter>
2行目の vi editor の位置へ移動する
2行目の vi editor の位置へ移動する

上図のように文字カーソルが2行目の "vi editor" の位置に移動します

このように、検索テキストの最後に $(ドル記号) 指定することで、行末にあるテキストが検索されます。

さらに、順方向の次の一致へ移動してみましょう。

キーボードから n を入力してください。

n
5行目の vi editor の位置へ移動する
5行目の vi editor の位置へ移動する

上図のように文字カーソルが5行目の "vi editor" の位置に移動します

3行目にも "vi editor" というテキストがありますが、検索には一致しませんでした。 これは、3行目の "vi editor" の行は、.(ピリオド) で終わっているためです

空行も検索できる

^(キャレット) と $(ドル記号) を組み合わせて空行を表すこともできます。 例えば、

/^$<Enter>

とすることで、空行を検索することができます。

  
  

まとめ

正規表現では、^(キャレット) は行頭を表し、$(ドル記号) は行末を表します。

なお、行頭とは行の先頭のことであり、行の最初の文字のことではありません。 同様に、行末は行の末尾のことであり、行の最後の文字のことではありません。

正規表現 意味
^
(キャレット)
行頭を表す
$
(ドル記号)
行末を表す
メニュー