ruby-on-rails - ruby:使用 Regexp.union(数组)时添加 boundaries\b 选项?

标签 ruby-on-rails ruby regex ruby-on-rails-4

我正在使用以下方法创建一个正则表达式匹配器:

Regexp.new(Regexp.union(some_hash.keys))

是否可以为数组的每个元素添加边界过滤器,所以我有:

/\bkey1\b|\bkey2\b|,....../

最佳答案

对于正则表达式键:

Regexp.union(some_hash.keys.map { |k| /\b#{k}\b/ })

或文字键:

Regexp.union(some_hash.keys.map { |k| /\b#{Regexp.escape(k)}\b/ })

Regexp.union 的结果已经是一个Regexp,不需要Regexp.new。事实上,我们也可以在 Regexp.union 中使用纯字符串,不同之处在于我们不在每个子表达式中初始化标志:

Regexp.union(some_hash.keys.map { |k| "\\b#{k}\\b" })
Regexp.union(some_hash.keys.map { |k| "\\b#{Regexp.escape(k)}\\b" })

关于ruby-on-rails - ruby:使用 Regexp.union(数组)时添加 boundaries\b 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39009009/

相关文章:

ruby-on-rails - Rails 4 - 从 Koala gem 获取 Facebook cookie?

ruby-on-rails - 用于 Ruby 的 vim 中的全局 "Go to definition"?

mysql - 存储全站用户事件的有效方式

ruby - 覆盖 not_found sinatra 应用程序

Ruby 终端代码不工作

python - 用正则表达式查找所有重复的模式

javascript - 阻止jquery函数被自动调用

python - 以不同的顺序检索多个捕获组?

regex - 具有负前瞻的递归正则表达式

ruby-on-rails - 如何通过 cron 运行 rake 任务?