首页 > 解决方案 > 不匹配 $ 作为正则表达式中的字符串

问题描述

我正在使用 Mongodb 数据库开发 Golang 项目。我想在不区分大小写的情况下从数据库中搜索字符串,所以我在查询中使用了正则表达式,如下所示:

var result interface{} 
col := ses.DB("testdb").C("coupons")
err = col.Find(bson.M{"code": bson.RegEx{"^" + code + "$", "i"}}}).One(&result)

其中代码为“OFF$50”,但上述查询不返回结果。当我删除正则表达式时,它会起作用,但在这种情况下,如果我像“Off$50”一样通过,它将不起作用。我需要来自 db 的不区分大小写的结果。任何人都可以帮助我进行此查询。

标签: mongodbgo

解决方案


MongoDB $regex使用 perl 兼容的正则表达式(PCRE)。

这种正则表达式中的美元符号$用于匹配行尾,类似于插入符号^匹配行首的方式。

要匹配文字$,可以使用反斜杠对其进行转义\,或者将其包含在一个字符类中,例如[\].

请注意,由于您将字符串传递给将构建正则表达式的函数,因此您可能还需要转义字符串中的反斜杠,以便它出现在完成的正则表达式中,即在需要的地方使用 2 个反斜杠。


推荐阅读