- Home ›
- Ruby正規表現の使い方 ›
- 任意の文字と繰り返し(量指定子) ›
- HERE
任意の文字を繰り返す
広告
任意の一文字にマッチするメタ文字(.)とメタ文字(*)やメタ文字(+)を組み合わせることで、任意の文字が繰り返し現れた場合にマッチする正規表現を作成することが出来ます。
例として「a」と「b」の間に任意の文字が繰り返し現れるパターンは次のようになります。
/a.+b/
上記の場合、メタ文字(+)の直前の文字がメタ文字(.)となっています。「+」は直前の文字を1回以上繰り返す場合にマッチし、「.」は任意の一文字にマッチします。結果として「.+」は任意の文字が1回以上繰り返す場合にマッチすることになります。よって「a」と「b」の間にどんな文字が何文字記述されていてもマッチすることになります。
マッチするもの:
aPb abowb a1098opeb
ただしメタ文字「.」は改行にはマッチしませんので、改行以外の任意の文字が1回以上繰り返される場合にマッチします。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku require "kconv" def check(str) if /G.+G/ =~ str then print(Kconv.tosjis("○") + str + "¥n") else print(Kconv.tosjis("×") + str + "¥n") end end print(Kconv.tosjis("「G.+G」にマッチするかどうか¥n¥n")) check("GooG") check("GomaG") check("G1234321G") check("Gpp¥nopoG")
上記のプログラムを「test7-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )