【问题标题】:How to match a string consisting special character like hyphen and spaces如何匹配由连字符和空格等特殊字符组成的字符串
【发布时间】:2020-07-03 17:33:00
【问题描述】:

我有一个字符串:

word : 'A-Scan Ultrasonic'

如何匹配:

   'A Scan Ultrasonic'

我已经尝试了我的运气

{word:{$regex:".*A Scan Ultrasonic.*",$options: 'i'}}

但这不会获取任何结果

我可以知道如何匹配,感谢任何帮助,TIA

【问题讨论】:

  • 假设您的一个文档有 :: word : 'A-Scan Ultrasonic' 并且另一个有 word : 'A-Ultrasonic' 另一个有 word : 'A-Scan' 您是否必须匹配所有三个?还有你的 MongoDB 版本是什么?
  • 嘿@whoami 它的 4.2 伴侣,不,它应该只匹配“A-Scan Ultrasonic”而不是你提到的其他......
  • 好的,那么这并不容易,除非您使用正则表达式来控制它,否则 mongo 不会直接提供任何东西,如给定答案中所述..
  • answer 提供正则表达式为 {"name": {$regex: "(-|\s)"}} ,但如何与 '$match': { 'word': re.compile(r".*" + word + ".*") } 相同? .....这里它检查单词是否包含在文档单词中,类似上面,如何做这个队友?
  • 不确定,因为我还没有在 pymongo 上工作过 al d bst..

标签: mongodb aggregation-framework pymongo


【解决方案1】:

这实际上不是 mongo 的事情,你应该使用正确的正则表达式。 试试这个:

{ name: { $regex: /.*A(-|\s)Scan(-|\s)Ultrasonic.*/}}

【讨论】:

  • 这很好解释 mate ,但是如果我不知道连字符或空格在哪里,而只是匹配包含连字符和空格的字符串呢?
  • {"name": {$regex: "(-|\s)"}}
  • 谢谢伙计,还有一个疑问,我怎么能像这样写一个查询:'$match': { 'word': re.compile(r".*" + word + ".*") },这里word是一个变量,有一些字符串值......我该怎么做你的答案也一样?
  • 你试图用python编写mongo正则表达式,这是错误的。像这样写:regex_pattern = ".*" + word + ".*" db.collectionname.find({'name':{'$regex':regex_patern}})
  • 我写了,将你的 python 正则表达式字符串保存到某个变量,然后像上面一样传递
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-25
  • 2014-07-12
  • 2014-05-09
  • 2021-10-16
  • 2014-08-17
  • 1970-01-01
相关资源
最近更新 更多