Ruby on rails ruby中的Regexp联合转义了我原来的regex
我有多个正则表达式,我想使用Regexp.union将它们合并到一个大正则表达式中,因此我有一个正则表达式作为示例:Ruby on rails ruby中的Regexp联合转义了我原来的regex,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我有多个正则表达式,我想使用Regexp.union将它们合并到一个大正则表达式中,因此我有一个正则表达式作为示例: ^image\d*$ 所以我试着这样做: regex = %w(^image\d*$) => ["^image\\d*$"] re = Regexp.union(regex) => /\^image\\d\*\$/ 它将我的正则表达式转义为/^image\\d\*$/,因此当我尝试基本情况时,它不匹配: "image0".match(re) => nil
^image\d*$
所以我试着这样做:
regex = %w(^image\d*$)
=> ["^image\\d*$"]
re = Regexp.union(regex)
=> /\^image\\d\*\$/
它将我的正则表达式转义为/^image\\d\*$/
,因此当我尝试基本情况时,它不匹配:
"image0".match(re)
=> nil
我怎样才能绕过这个?传递对象<代码>%w(…)是字符串文字。对正则表达式文本使用%r(…)
或/…/
regex = %r(^image\d*$)
# => /^image\d*$/
Regexp.union(regex)
# => /^image\d*$/
这是预期的行为:我投票决定不公开,因为另一个问题确实回答了这个问题——有这个问题的其他人更可能用谷歌搜索上述问题,而不是问regex unon如何工作。我如何使用regex数组?
array_of_regexs = [/a/, /b/, /c/]
# => [/a/, /b/, /c/]
Regexp.union(array_of_regexs)
# => /(?-mix:a)|(?-mix:b)|(?-mix:c)/