程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Hopw 对 mongo 中的索引进行多锚正则表达式查询

发布于2023-11-26 20:53     阅读(225)     评论(0)     点赞(11)     收藏(3)


我正在使用正则表达式锚点搜索索引,如下所示:

/^[Anchor1]/

一切都很好。它匹配以“Anchor1”开头的所有值,并使用 idex 来执行此操作。

但是,我想匹配多个起始字符串之一,如下所示:

/^[Anchor1][Anchor2][Anchor3][Anchor4]/

速度太慢了,回不来了。这适用于有超过 3 个锚点的任何情况。我相当确定这很简单。要么我的正则表达式很糟糕(我希望情况可能是这样——我讨厌正则表达式),要么我的 mongo-fu 很弱。如果相关的话,我正在使用 Java 驱动程序。

我的问题是:

我在这里做错了什么?我希望能够利用 mongo 索引来匹配几个可能的起始字符串之一。

更新

哦。我的正则表达式很垃圾。应该是(感谢Sammaye):

^(Anchor1|Anchor2|Anchor3)

但它仍然很慢。我会提出一个更清楚的问题。


解决方案


好吧,你仍然没有多大意义,因为在字符串的开头^[Anchor]不匹配,它而是匹配任何, , , ,在字符串的开头,而发生这种情况是因为你正在使用字符类AnchorAn,chor[]

Anchor要匹配在字符串开头命名的锚点,您需要使用:

^Anchor

为此,您不需要任何字符类。

如果有多个锚点,那么你可以这样做:

^(?:Anchor|Anchor1|Anchor2|...|AnchorN)

除非您告诉我们您要匹配的确切锚点是什么,否则无法进一步优化。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/684994/5bb3ba810373e8cc5647/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

11 0
收藏该文
已收藏

评论内容:(最多支持255个字符)