在pymong中搜索时忽略一个特定或任何特殊字符

2024-04-28 23:52:26 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我的mongodb中有一些产品,如下所示

  1. 圣诞老人糖果
  2. 赫利甜酒
  3. 优质甜品

现在,我得到的搜索是在小的情况下进行的,有时可能带有特殊字符或没有特殊字符。那么,我如何构建一个能够准确给出输出的查询呢?例如,如果用户输入了“优质甜味”,那么它应该与我的mongodb中的“优质甜味”匹配。如果用户在uppecase中输入了“HERLEYS SWEET”,则应匹配“HERLEYS SWEET”(如我的MongoDB中所示)

db.product.find({"Product":re.compile('^' + re.escape(pr) + '$',re.IGNORECASE)})

我有上面的查询,它可以使用大写或小写,但是如果用户正在搜索像“herleys sweet”这样的东西,那么它就不起作用


Tags: 用户re产品mongodb情况糖果sweet特殊字符
1条回答
网友
1楼 · 发布于 2024-04-28 23:52:26

您可以做的一件事是使用re.sub()函数用其他字符替换特殊字符

你可以有这样的东西:

db.product.find({"Product":re.compile('^' + re.sub('[<list of special characters>]', '<string to replace with>', pr) + '$',re.IGNORECASE)})

例如:

  • 创建特殊字符列表:[\-\_\~\!\\\/\^\$\%]

  • 选择要用什么替换特殊字符。可以是空间' '或任何.*

那么,你应该:

db.product.find({"Product":re.compile('^' + re.sub('[\-\_\~\!\\\/\^\$\%]', '.*', pr) + '$',re.IGNORECASE)})

相关问题 更多 >