任意の文字を繰り返す

広告

任意の一文字にマッチするメタ文字(.)とメタ文字(*)やメタ文字(+)を組み合わせることで、任意の文字が繰り返し現れた場合にマッチする正規表現を作成することが出来ます。

例として「a」と「b」の間に任意の文字が繰り返し現れるパターンは次のようになります。

/a.+b/

上記の場合、メタ文字(+)の直前の文字がメタ文字(.)となっています。「+」は直前の文字を1回以上繰り返す場合にマッチし、「.」は任意の一文字にマッチします。結果として「.+」は任意の文字が1回以上繰り返す場合にマッチすることになります。よって「a」と「b」の間にどんな文字が何文字記述されていてもマッチすることになります。

マッチするもの:

aPb
abowb
a1098opeb

ただしメタ文字「.」は改行にはマッチしませんので、改行以外の任意の文字が1回以上繰り返される場合にマッチします。

サンプルプログラム

では簡単なプログラムで確認して見ます。

test7-1.rb

#! 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 )