3

複数の正規表現があり、Regexp.union を使用してそれらを 1 つの大きな正規表現に結合したいので、この正規表現を例として示します。

^image\d*$

だから私はこれを試します:

regex = %w(^image\d*$)
=> ["^image\\d*$"]
re = Regexp.union(regex)
=> /\^image\\d\*\$/

そして、それは私の正規表現をエスケープする/\^image\\d\*\$/ので、基本的なケースを試してみると一致しません:

"image0".match(re)
 => nil 

どうすればこれを回避できますか?

4

1 に答える 1

7

オブジェクトを渡しRegexpます。%w(...)文字列リテラルです。正規表現リテラルには%r(...)orを使用します。/.../

regex = %r(^image\d*$)
# => /^image\d*$/
Regexp.union(regex)
# => /^image\d*$/

array_of_regexs = [/a/, /b/, /c/]
# => [/a/, /b/, /c/]
Regexp.union(array_of_regexs)
# => /(?-mix:a)|(?-mix:b)|(?-mix:c)/
于 2013-10-26T18:04:31.507 に答える