dev*_*vin 2 regex whitespace mongodb
我在 MondoDB 中存储了大量文本数据,用户可以通过关键字或短语进行查询,但存在一些数据具有 unicode 字符 U+00A0(不间断空格)而不是常规空格的问题。
修复数据不是一个选项(那些 nbsp 是故意存在的),我仍然希望用户能够搜索并找到该数据。因此,我更新了 Mongo 查询构建代码,以在用户输入空格的位置搜索任何空格 [\s],从而生成如下查询:
{ "tt" : { "$elemMatch" : { "x" : { "$regex" : "high[\s]performance" , "$options" : "i"} }}}
Run Code Online (Sandbox Code Playgroud)
(查询还有更多内容,这只是相关的部分)。
不幸的是,这不会返回预期的结果。因此,我尝试了许多其他方法来实现此目的,最终发现当我搜索“非非空白”[^\S] 时,我得到了正确的结果,如下所示:
{ "tt" : { "$elemMatch" : { "x" : { "$regex" : "high[^\S]performance" , "$options" : "i"} }}}
Run Code Online (Sandbox Code Playgroud)
这引出了我的问题——为什么“任何空白”(“\s”)无法找到此文本,而“非非空白”(“^\S”)却成功找到它?Mongo 对于空白和非空白有一套不同的规则吗?
数据全部为UTF-8,MongoDB版本为2.2.2
| 归档时间: |
|
| 查看次数: |
10027 次 |
| 最近记录: |