%rを使ったパターンの定義

正規表現オブジェクトを作成する時に %r を使って定義することもできます。パターンの中に「/」が多く含まれる場合に便利です。ここでは Ruby の正規表現で %r を使ってパターンの定義を行う方法について解説します。

(Last modified: )

%rを使ったパターンの定義

正規表現オブジェクトを作成する時に /パターン/ の形式で作成が可能でしたが、パターンの中にスラッシュ / が多く含まれる場合には / を都度エスケープする必要が出てきます。

このような場合に正規表現オブジェクトの別の作成方法が用意されています。書式は次の通りです。

%r{パターン}

%r で始まり、対になった区切り文字で文字の集合を囲うことで文字列を作成できます。区切り文字は {} の他に次のようなものが使用できます。

%r{パターン}
%r[パターン]
%r(パターン)
%r<パターン>

また上記以外にも英数字とスペースを除いた文字も使用できます。この場合は同じ文字を使って囲います。

%r|パターン|
%r!パターン!
%r*パターン*

この形式で正規表現オブジェクトを作成した場合には、パターン内に / が含まれていてもエスケープは不要ですが、逆に区切り文字に使用した文字がパターン内で現れる場合にはエスケープが必要となります。通常はパターン内で使用されない区切り文字を使ってパターンを囲います。

サンプルコード

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

# encoding: UTF-8

def check(str)
  print(str + " は img/ に")

  if %r!img/! =~ str then
    puts("マッチします")
  else
    puts("マッチしません")
  end
end

check("img/a.png")
check("/usr/local/bin")
check("book/img/local")

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

%rを使ったパターンの定義

-- --

Ruby の正規表現で %r を使ってパターンの定義を行う方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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