Regex 正则表达式搜索引擎

Regex 正则表达式搜索引擎,regex,search-engine,Regex,Search Engine,有没有一个搜索引擎可以让我用正则表达式进行搜索?可以让你用正则表达式进行搜索 据我所知,不存在用于常规搜索的此类搜索引擎。正则表达式存在一些问题,当前这些问题禁止在实际场景中使用这些正则表达式。最紧迫的是整个缓存的互联网必须与您的正则表达式匹配,这将占用大量的计算资源;在正则表达式上下文中,索引似乎非常无用,因为正则表达式可能是未绑定的(/fo*bar/)。我没有具体的引擎来建议 然而,如果您可以使用正则表达式语法的子集,搜索引擎可以存储额外的标记来有效地匹配相当复杂的表达式。Solr/Luce

有没有一个搜索引擎可以让我用正则表达式进行搜索?

可以让你用正则表达式进行搜索


据我所知,不存在用于常规搜索的此类搜索引擎。

正则表达式存在一些问题,当前这些问题禁止在实际场景中使用这些正则表达式。最紧迫的是整个缓存的互联网必须与您的正则表达式匹配,这将占用大量的计算资源;在正则表达式上下文中,索引似乎非常无用,因为正则表达式可能是未绑定的(/fo*bar/)。

我没有具体的引擎来建议

然而,如果您可以使用正则表达式语法的子集,搜索引擎可以存储额外的标记来有效地匹配相当复杂的表达式。Solr/Lucene允许自定义标记化,同一个单词可以生成多个标记,并使用不同的规则集

我将以我的名字为例:“标记点。”

不区分大小写,带词干:(标记,标记,点)

区分大小写,无词干:(标记,标记,斑点)

NLP同义词表扩展区分大小写:([标记,Marc],[标记,指示,指向],[点,位置,位置,信标,坐标])

现在向您的问题发展,不区分大小写,词干分析,重复数据消除,自动完成前缀匹配:([m,ma,mar,mark],[s,sp,spo,spot])

如果您想要“子字符串”样式匹配,它将是:([m,ma,mar,mark,a,ar,ark,r,rk,k],[s,sp,spo,spot,p,po,pot,o,ot,t])

单个搜索索引包含所有这些不同形式的标记,并选择用于每种搜索类型的标记

让我们尝试使用带有文字标记的正则表达式样式的单词“Missippi”:[m,m?,m+,i,i?,i+,s,ss,s+,ss+…]等等

实际规则将取决于正则表达式子集,但希望模式变得更加清晰。您可以进一步扩展以匹配其他正则表达式片段,然后使用短语搜索的形式来定位匹配项

当然,索引会相当大,但它可能是值得的,这取决于项目的要求。您还需要一个查询解析器和应用程序逻辑

我意识到,如果你正在寻找一个罐装发动机,这并不能解决问题,但从理论上讲,这就是我的方法(假设这真的是一个要求!)。如果有人想要的只是子字符串匹配和灵活的通配符匹配,那么索引中的标记就可以少得多


就罐装应用程序而言,您可以查看用于源代码索引的OpenGrok,它不是完整的正则表达式,但对源代码非常了解。

Russ Cox的一篇关于正则表达式在三角图索引上搜索的非常好的文章

已关闭


正则表达式搜索需要大量资源,因此流行的搜索引擎无法负担。

Globalogiq提供了一个可以使用正则表达式进行搜索的平台。但是它不是免费的。

如果regex占用了太多的资源,为什么不通过cputime对其使用收费,而不是使其完全不可用?我相信有些人会付费并使用它(当然也会对收费做出解释,从碳足迹和cpu资源的角度进行解释)。谷歌在搜索中确实支持expansive*,
*go
go*
或intitle:
“*go”
这里是:

字符类是可行的。这很好,但regex搜索不允许有效的索引,会导致对互联网上大约万亿页的线性搜索。不过,可能会出现一些较小的类别,例如某个特定网站上的文章或StackOverflow上的帖子。请注意,Google代码搜索正在退役。对这个问题的大多数答案现在都过时了。现在。