mysql - 将存储在 mysql 字段中的正则表达式字符串用于 Rails 项目

标签 mysql ruby-on-rails regex

为了清理 Rails 项目的代码,我将所有正则表达式字符串移至 MySQL。如何将 MySQL 字段中的字符串添加到我的匹配方法中?这是我正在尝试做的事情的示例:

foobar = []
regular_ex = StringDb.pluck(:id, :regex) 
# :regex is a column that stores regex strings, ie. '/[a-c]|[1,2,3]/'
regular_ex.each do |exp|
    if foo.match(exp[1])
        foobar << exp[0]

如果我的问题不清楚,请告诉我。 提前致谢!

最佳答案

您可以像这样从字符串创建新的正则表达式

Regexp.new str

或者使用正则表达式插值

%r{#{regex_string}}

这意味着你会做类似的事情

foobar = []
regular_ex = StringDb.pluck(:id, :regex) 
# :regex is a column that stores regex strings, ie. '/[a-c]|[1,2,3]/'
regular_ex.each do |exp|
    if Regexp.new(exp).match("stringToMatch")
        # do something

请注意两件事。

  1. 为了使其正常工作,您应该从数据库中的正则表达式中删除开头和结尾的斜杠。

存储“[a-c]|[1,2,3]”而不是“/[a-c]|[1,2,3]/”。

  • 我不太确定您为什么决定将所有正则表达式存储在数据库中,但这听起来不是一个好主意。
  • 关于mysql - 将存储在 mysql 字段中的正则表达式字符串用于 Rails 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29354060/

    相关文章:

    ruby-on-rails - 工厂女郎 - 有很多联想

    python - 拆分字符串而不删除分隔符,但抑制空捕获组

    mysql - 连接到主机提供之外的其他 MYSQL 数据库

    mysql - SQL表拆分-有必要吗

    javascript - 在 Rails 4 上处理 AJAX 的正确方法是什么?

    javascript - collection_radio_buttons 自动提交?

    c# - 如何使用正则表达式仅选择状态

    regex - 查找 unicode 字符串的十六进制代码

    杀死PID后mysql数据库没有停止

    mysql - 存储过程在 MySql 中无法正常工作?