トップ > 初級編 > その他 > 正規表現(初級編) >
直前の文字の0回以上の繰り返し

  

直前の文字の0回以上の繰り返しを表す

この記事では、直前の文字の0回以上の繰り返しを表すメタ文字である *(アスタリスク) について説明します

*

直前の文字の0回以上の繰り返しとは、言葉の通り、1つ前の文字の繰り返しのことです。 ただし、0回以上というのが重要であり、かつ、わかりにくい点でもあります。

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

  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つ入れてあります。

直前の文字の0回以上の繰り返しを表す *(アスタリスク)

正規表現では、*(アスタリスク) は直前の文字の0回以上の繰り返しを表します

重要なのは、『1回以上の繰り返し』ではなく『0回以上の繰り返し』であるという点です。 『0回以上の繰り返し』とは、つまり、直前の文字が存在しなくても一致するということです。

例えば、

a*

という正規表現は、"a" に一致するのは当然ですが、"b" にも "1" にも "あ" にも "ア" にも "亜" にも一致します

では、実際に *(アスタリスク) を含めたテキスト検索を実施してみましょう。

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

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

まずは、"vi" で始まり "m" が0回以上繰り返す文字を検索してみましょう。

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

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

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

検索テキストは、"vim*" と入力しましたが、検索されたのは "vi editor" の行です"m" が含まれていない行であるにも関わらず検索に一致しました。

検索に一致した理由は、*(アスタリスク) が0回以上の繰り返しを表しているからです。 つまり、"m" は含まれなていなくてもいいし、"m" のように1文字でもいいし、"mm" のように2文字でもいいということになります。

続いて *(アスタリスク) を使って文字 "a" の連続を検索してみましょう

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

/aa*<Enter>
8行目の a の行へ移動する
8行目の a の行へ移動する

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

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

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

n
9行目の aa の行へ移動する
9行目の aa の行へ移動する

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

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

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

n
10行目の aaa の行へ移動する
10行目の aaa の行へ移動する

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

このように、文字の連続を探すことができます。

  
  

まとめ

正規表現では、*(アスタリスク) は直前の文字の0回以上の繰り返しを表します。

正規表現 意味
*
(アスタリスク)
直前の文字の0回以上の繰り返しを表す
メニュー