Regexp#+を定義して「または」を簡単に作る

「AまたはB」のような正規表現を簡単に作ろうと思って以下のようにしてみたら、うまくいかなかった。

001 > /qiita/ + /kobito/
NoMethodError: undefined method `+' for /qiita/:Regexp

意外にもRegexp#+が定義されてなかったので、以下のようにクラスを拡張してみた。

class Regexp
  def +(other)
    Regexp.new(self.source + '|' + other.source)
  end
end

Regexp#sourceはその正規表現の文字列を返すメソッド。で、期待通りにうまくいった。

002 > /qiita/ + /kobito/
=> /qiita|kobito/