Sql 存储简单正则表达式的有效方法

Sql 存储简单正则表达式的有效方法,sql,regex,database,data-structures,Sql,Regex,Database,Data Structures,我有一个简单正则表达式列表: ABC.+DE.+FHIJ.+ .+XY.+Z.+AB .+KLM.+NO.+J.+ QRST.+UV 它们都有.+和一些文本(我称之为“单词”)的交替模式,重复了若干次。一个模式可能以+开始,也可能不以+结束。这些正则表达式都是互斥的。当添加另一个正则表达式时,我希望删除任何其他匹配的正则表达式,并添加一个将添加的正则表达式与其所有匹配项相结合的正则表达式。例如,添加: .+J.+ 将匹配 ABC.+DE.+FHIJ.+ .+KLM.+NO.+J.+ 因此

我有一个简单正则表达式列表:

ABC.+DE.+FHIJ.+
.+XY.+Z.+AB
.+KLM.+NO.+J.+
QRST.+UV
它们都有.+和一些文本(我称之为“单词”)的交替模式,重复了若干次。一个模式可能以+开始,也可能不以+结束。这些正则表达式都是互斥的。当添加另一个正则表达式时,我希望删除任何其他匹配的正则表达式,并添加一个将添加的正则表达式与其所有匹配项相结合的正则表达式。例如,添加:

.+J.+ 
将匹配

ABC.+DE.+FHIJ.+
.+KLM.+NO.+J.+
因此,这些将被删除并替换为添加的正则表达式,从而导致:

.+J.+ 
.+XY.+Z.+AB
QRST.+UV

我需要以某种数据结构或(最好)高效的方式将这些模式存储在数据库中。我首先尝试了一个字典树,结果发现在正则表达式以a.*开头的情况下,它必须在整个字典树中搜索下一个单词,即O(2^n)顺序。不幸的是,(除非我弄错了),SQLite(我正在使用)和我使用过的任何其他关系数据库似乎都不支持“正则表达式”作为数据类型。我的问题是,有没有一种有效的方法来存储和检索这样简单的正则表达式?如果没有固定的方法,是否存在一些相对有效的数据结构(例如,在最坏的摊销多项式时间内)?

能否请您解释一下您使用这些正则表达式的目的,因为这样可以更容易地提供更好的答案?特别是当我看到您拆分正则表达式的方式时,我想知道是a还是a更合适


从它们中,你可能会发现你的答案很简单,比如提供更好的规范化,或者找到一个没有专门针对你的问题领域的SQL db的替代方案。

你能解释一下你使用这些正则表达式的目的吗,因为这样可以更容易地提供更好的答案?特别是当我看到您拆分正则表达式的方式时,我想知道是a还是a更合适

从他们的观点中,您可能会发现您的答案很简单,比如提供更好的规范化,或者找到一个没有专门针对您的问题领域制作的SQL db的替代方案