1. ホーム
  2. ruby-on-rails

[解決済み] Ruby の %r{ } 式

2022-05-09 10:13:53

質問

あるモデルで、フィールド

validates :image_file_name, :format => { :with => %r{\.(gif|jpg|jpeg|png)$}i

私にはかなり奇妙に見えます。私は、これが正規表現であることを認識しています。でも、私はそうしたいのです。

  • というのは、具体的に何を意味しているのかを知るためです。それは %r{value} と同じです。 /value/ ?
  • 通常のRubyの正規表現演算子で置き換えることができます。 /some regex/ または ~= . 可能ですか?

どのように解決するのですか?

%r{} とは同等です。 /.../ という表記がありますが、正規表現で'/'をエスケープすることなく使用することができます。

%r{/home/user}

は等価である。

/\/home\/user/

これは読みやすさのための構文商品でしかない。

編集する

なお、「{}」の代わりに、アルファベット以外のほぼすべての文字ペアを使うことができます。 これらの変種も同様に機能します。

%r!/home/user!
%r'/home/user'
%r(/home/user)

2を編集します。

ただし %r{}x バリアントは空白を無視するので、複雑な正規表現をより読みやすくすることができます。例 GitHubのRubyスタイルガイド :

regexp = %r{
  start         # some text
  \s            # white space char
  (group)       # first group
  (?:alt1|alt2) # some alternation
  end
}x