是否有搜索引擎,允许我按正则表达式搜索?
答案 0 :(得分:3)
Google Code Search允许您使用正则表达式进行搜索。
据我所知,一般搜索都没有这样的搜索引擎。
答案 1 :(得分:2)
正则表达式存在一些问题,目前禁止在实际场景中使用这些问题。最紧迫的是整个缓存的互联网必须与你的正则表达式相匹配,这需要大量的计算资源;由于正则表达式可能未绑定(/ fo * bar /),索引在正则表达式上下文中几乎没用。
答案 2 :(得分:1)
我没有特定的引擎可供建议。
但是,如果您可以使用正则表达式语法的子集,则搜索引擎可以存储其他令牌以有效地匹配相当复杂的表达式。 Solr / Lucene允许自定义标记化,其中相同的单词可以生成多个标记和各种规则集。
我将以我的名字为例:“马克标志着这一点。”
对词干不区分大小写:(标记,标记,点)
区分大小写但没有词干:(标记,标记,点)
与NLP词库扩展区分大小写:([Mark,Marc],[mark,indication,to-point],[spot,position,location,beacon,coordinate])
现在朝着你的问题发展,不区分大小写,词干,重复数据删除,自动完成前缀匹配:([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,它不是完整的正则表达式,但很好地理解源代码。
答案 3 :(得分:1)
如果正则表达式占用太多资源,为什么不为cputime使用它而不是让它完全不可用呢?我相信有些人会付钱并使用它(当然还会提供相关费用的解释,以碳足迹和cpu资源来解释)。 Google确实在搜索*go
或go*
或内注中支持扩展*:"*go"
此处为:http://www.hackcollege.com/blog/2011/11/23/infographic-get-more-out-of-google.html
答案 4 :(得分:0)
关于Russ Cox的三元组索引的正则表达式搜索的一篇非常好的文章
答案 5 :(得分:0)
http://www.google.com/codesearch已被关闭......
正则表达式搜索占用了大量资源,因此受到热门搜索引擎的支持。
答案 6 :(得分:0)
Globalogiq有HTML Source Code Search,您可以使用正则表达式进行搜索。但它不是免费的。