【问题标题】:MongoDB Regex with multiple string having special character具有特殊字符的多个字符串的MongoDB正则表达式
【发布时间】:2015-10-13 12:37:51
【问题描述】:

我在 mongodb 查询中遇到问题。我只需要从表 'Feed' 中获取那些名为 'message' 的字段具有子字符串 'you & me' 或 'abc 的行吗?定义'。

我正在使用以下查询,但它不起作用。

db.getCollection('Feed').find({"message": { "$regex" : 'you & me | abc ? def'}});

我也得到了一个替代解决方案,将所有特殊字符替换为其十六进制值,如下面的查询所示。

db.getCollection('Feed').find({"message": { "$regex" : 'you \0x26 me | abc \0x3f def'}});

但在这种情况下,结果仅针对“你 \0x26 我”,这意味着如果我将特殊字符转换为十六进制值。它仅适用于第一个搜索正则表达式。

【问题讨论】:

    标签: regex mongodb mongodb-query


    【解决方案1】:

    您需要在正则表达式中转义 &?,因为它们是特殊字符。

    db.getCollection('Feed').find({ 'message': /\s*you \& me\s*|\s*abc \? def\s*/ })
    

    Demo

    【讨论】:

    • 在给定的演示链接中,解释了 \s* 匹配任何空白字符。但就我而言,搜索关键字前后可能有任何字符。在 \s* 的位置对我的要求进行哪些更改。
    • 正则表达式仍然可以工作并不重要。试试吧
    猜你喜欢
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2016-05-16
    • 2014-04-28
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多