【发布时间】:2017-07-24 05:37:58
【问题描述】:
使用 Ruby 2.4,如何使用包含字符串的数组构建正则表达式?我有
TOKENS = %w(to - &).freeze
我想构建一个正则表达式,它表示,匹配至少一个数字、任意中断或非中断空格,然后是我的数组中的一个字符串。我在下面尝试了,结果错误
2.4.0 :014 > "abc" =~ /^\d+[[:space:]]*#{Regexp.escape(TOKENS)}/
TypeError: no implicit conversion of Array into String
from (irb):14:in `escape'
from (irb):14
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
一个匹配的例子是
2 to blah
和不匹配的东西是
& no way
【问题讨论】:
-
用
Regexp.union替换Regexp.escape
标签: ruby-on-rails arrays ruby regex