3, :expression => /t+/}, {:name => "Rob"-6ren">
gpt4 book ai didi

regex - 是否有可以将正则表达式存储为值的数据库?

转载 作者:太空狗 更新时间:2023-10-30 01:45:34 32 4
gpt4 key购买 nike

我正在寻找可以将正则表达式存储为值的数据库。例如。像这样的东西:

{: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+/

关于regex - 是否有可以将正则表达式存储为值的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30837762/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com