繁体   English   中英

红宝石中的Regexp联盟逃脱了我原来的正则表达式

[英]Regexp union in ruby escapes my original regex

我有多个正则表达式,我想使用Regexp.union将它们组合在一个大的正则表达式中,所以我有这个正则表达式作为示例:

^image\d*$

所以我试试这个:

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

并且它将我的正则表达式转移到/\\^image\\\\d\\*\\$/所以当我尝试基本情况时它不匹配:

"image0".match(re)
 => nil 

我怎么能得到这个?

传递Regexp对象。 %w(...)是字符串文字。 使用%r(...)/.../作为正则表达式文字。

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)/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM