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/