Regexpクラス

広告

正規表現オブジェクトの元になっているクラスはRegexpクラスです。正規表現オブジェクトを作成するにはRegexpクラスのメソッドを使っても可能です。ここではRegexpクラスのクラスメソッドである「new」メソッド及び「compile」メソッドの使い方を確認します。

Regexp.new(string[, option[, code]])

クラスメソッドの「new」を使用する方法を確認します。

Regexp.new(string[, option[, code]])

1番目の引数にパターンを表す文字列を指定します。例えば次のように記述します。

Regexp.new("abc")

作成された正規表現オブジェクトは次のオブジェクトと同じです。

/abc/

2番目の引数では修飾子を指定します。(省略可能です)。指定可能な値はRegexpクラスで定義されている以下のいずれかの定数となります。

Regexp::IGNORECASE    # /i 修飾子
Regexp::MULTILINE     # /m 修飾子
Regexp::EXTENDED      # /x 修飾子

修飾子については「修飾子の種類と指定方法」を参照して下さい。

3番目の引数ではマッチするかどうかを判定する時に使用される文字コードを指定します(省略可能です)。文字コードの設定については「Ruby正規表現における日本語の扱い」を参照して下さい。

また1番目の引数は他の正規表現オブジェクトを指定することも可能です。この場合は、指定された正規表現オブジェクトがコピーされて返されます。(オブジェクト自体は別となります)。

Regexp.new(/abc/)

Regexp.compile(string[, option[, code]])

クラスメソッドの「compile」は「new」メソッドのエイリアスです。

Regexp.compile(string[, option[, code]])

使い方は「new」メソッドの場合と同じです。

サンプルプログラム

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

test3-1.rb

#! ruby -Ku
require "kconv"

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

  reg = Regexp.compile("入門")
  if reg =~ str then
    print(Kconv.tosjis("マッチします¥n"))
  else
    print(Kconv.tosjis("マッチしません¥n"))
  end
end

check("Ruby入門")
check("入門する")
check("入社する")

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

Regexpクラス

( Written by Tatsuo Ikura )