- Home ›
- Ruby正規表現の使い方 ›
- 任意の文字と繰り返し(量指定子) ›
- HERE
直前の文字を0回以上繰り返し(*)
広告
メタ文字の1つであるアスタリスク(*)をパターンの中に記述すると、アスタリスクの直前にある文字が0回以上繰り返された文字列にマッチします。0回でも可なので直前の文字が存在しなくてもマッチします。
例えば次のように使用します。
/Go*gle/
上記の場合、アスタリスク(*)は直前の文字(今回は「o」)に0回以上繰り返したものにマッチします。0回以上というのは「o」が無い場合と「o」や「oooo」など「o」が1回以上繰り返されている文字マッチするということになります。(直前の文字が無い場合は、空文字にマッチしていることになります)。
マッチするもの:
Ggle Gogle Google Gooogle Goooogle Gooooogle
マッチしないもの:
Gpgle Gooopgle
0回も含まれる点に注意して下さい。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku
require "kconv"
def check(str)
if /Go*gle/ =~ str then
print(Kconv.tosjis("○") + str + "¥n")
else
print(Kconv.tosjis("×") + str + "¥n")
end
end
print(Kconv.tosjis("「Go*gle」にマッチするかどうか¥n¥n"))
check("Ggle")
check("Gogle")
check("Google")
check("Goooooogle")
check("Gmgle")
check("Gomogle")
上記のプログラムを「test2-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )
RubyLife