viエディタでの正規表現 - 直前の文字の0回以上の繰り返し -

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

 
 
 
-
-
-
-
 
 
 
 

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

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


*

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

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



hello 2014
vi editor
 vi editor.

  vi editor
vim Editor
Vim Editor
a
aa
aaa
aaaa
aaaaa
.
*
^
$
/
\
[
]
<
>
{
}

  
3行目の先頭には、空白を1つ入れてあります。
  
4行目は空行です。
  
5行目の先頭には、空白を2つ入れてあります。

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

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

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

例えば、


a*

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ページの先頭へ
 

まとめ

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

正規表現 意味
*
(アスタリスク)
直前の文字の0回以上の繰り返しを表す
ページの先頭へ
 
 
-
-
-
-