正規表現オブジェクト

広告

正規表現もRubyではオブジェクトの一つです。正規表現オブジェクトはどのような文字とマッチするのかを表すパターンを正規表現で定められた規則に沿って記述し、スラッシュで囲んで表します。

/パターン/

パターンは文字列の他に特別な意味を持つメタ文字を組み合わせて作成します。

例として特定の1文字にマッチするパターンを作成してみます。

/m/

このパターンを使った場合は、対象の文字列に「m」が含まれていればマッチします。文字列の中のどの位置に含まれていても構いません。またパターンでは大文字と小文字は区別されますので「M」が含まれていてもマッチしません。例えば次のような文字列がマッチします。

morning
lemon
amazon

上記の文字列には「m」が含まれていますので、これらの文字列は先ほど作成した正規表現オブジェクトにマッチします。

次に複数の文字をパターン内に記述した場合です。

/abc/

このパターンを使った場合は、対象の文字列に「abc」が含まれていればマッチします。例えば次のような文字列がマッチします。

abc
xxxabczzz
123abc

正規表現「/abc/」は「a」「b」「c」と言う3つの文字が連続している必要があります。文字と文字の間に他の文字が含まれていてはいけません。その為、「aboc」のように「b」と「c」の間に別の文字が含まれている場合はマッチしません。

今回は文字又は文字列をパターンとして指定した単純なものでしたが、文字列に特別な意味を持つメタ文字と呼ばれるものなどと組み合わせて正規表現オブジェクトを作成します。

なお正規表現オブジェクトのパターンとして日本語が含まれている場合には文字コードを適切に設定する必要があります。詳しくは「Ruby正規表現における日本語の扱い」を参照して下さい。

サンプルプログラム

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

test2-1.rb

#! ruby -Ku
require "kconv"

def check(str)
  print(Kconv.tosjis(str + " は /abc/ に"))

  if /abc/ =~ str then
    print(Kconv.tosjis("マッチします¥n"))
  else
    print(Kconv.tosjis("マッチしません¥n"))
  end
end

check("abc")
check("Ababcde")
check("PAbcD")
check("aoabbca")

上記のプログラムを「test2-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。

正規表現オブジェクト

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)