为了清理 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
请注意两件事。
- 为了使其正常工作,您应该从数据库中的正则表达式中删除开头和结尾的斜杠。
存储“[a-c]|[1,2,3]”而不是“/[a-c]|[1,2,3]/”。
- 我不太确定您为什么决定将所有正则表达式存储在数据库中,但这听起来不是一个好主意。
关于mysql - 将存储在 mysql 字段中的正则表达式字符串用于 Rails 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29354060/