我正在寻找一个可以将正则表达式存储为值的数据库。例如。像这样的东西:
{:name => "Tim", :count => 3, :expression => /t+/},
{:name => "Rob", :count => 4, :expression => /a\d+/},
{:name => "Fil", :count => 1, :expression => /tt/},
{:name => "Marc", :count => 1, :expression => /bb/}
因此,我可以根据查询是否与表达式匹配来返回行/文档(例如“FIND rows WHERE "tt" =~ :expression”)。并得到 Tim 和 Fil 行作为结果。大多数数据库可以做完全相反的事情(检查文本字段是否与正则表达式查询匹配)。但不幸的是,mongo 和 postgres 都不能做相反的事情。
附:或者也许我错了,有一些 postgres 或 mongo 的扩展允许我存储正则表达式?
MongoDB 将允许您存储实际的正则表达式(即不是表示正则表达式的字符串),如下所示:
> db.mycoll.insertOne({myregex: /aa/})
{
"acknowledged" : true,
"insertedId" : ObjectId("5826414249bf0898c1059b38")
}
> db.mycoll.insertOne({myregex: /a+/})
{
"acknowledged" : true,
"insertedId" : ObjectId("5826414949bf0898c1059b39")
}
> db.mycoll.find()
{ "_id" : ObjectId("5826414249bf0898c1059b38"), "myregex" : /aa/ }
{ "_id" : ObjectId("5826414949bf0898c1059b39"), "myregex" : /a+/ }
您可以使用它来查询具有与查询匹配的正则表达式的行,如下所示:
> db.mycoll.find(function() { return this.myregex.test('a'); } )
{ "_id" : ObjectId("5826414949bf0898c1059b39"), "myregex" : /a+/ }
在这里,我们搜索字符串 'a' 与myregex
字段,使用正则表达式生成第二个文档/a+/
,被退回。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)