Regexpクラスを使った正規表現オブジェクトの作成

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

(Last modified: )

Regexpクラスを使った正規表現オブジェクトの作成

正規表現オブジェクトを作成するには Regexp クラスの new クラスメソッドを使います。

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

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

Regexp.new("abc")

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

/abc/

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

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

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

3 番目の引数ではマッチするかどうかを判定する時に使用される文字コードを指定します(省略可能です)。

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

Regexp.new(/abc/)

次に Regexp クラスの compile クラスメソッドの使い方です。クラスメソッドの compilenew メソッドのエイリアスです。

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

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

サンプルコード

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

# encoding: UTF-8

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

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

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

下記のように実行して下さい。

Regexpクラス

-- --

Ruby で Regexp クラスのクラスメソッドである new メソッド及び compile メソッドを使って正規表現オブジェクトを作成する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。