如何用RegExp从MongoDB查询中排除含指定子串的文档?
用正则表达式筛选不包含指定子串的文档
原始文档结构:
{ "sId": "s1", "source": "September Challenge 1" }, { "sId": "s2", "source": "other string multi word" }, { "sId": "s3", "source": "September sub string to filter Challenge" }
需求:筛选出source字段不包含子串“ sub string to filter ”的文档,预期结果:
{ "sId": "s1", "source": "September Challenge 1" }, { "sId": "s2", "source": "other string multi word" },
适用的正则表达式
直接使用否定前瞻断言的正则即可:
^(?!.* sub string to filter ).*$
正则含义拆解
^:匹配字符串的起始位置(?!.* sub string to filter ):否定前瞻,确保当前位置之后不存在任意字符(.*)加上目标子串的组合.*$:匹配从当前位置到字符串结尾的所有字符,保证整个字段内容都符合条件
使用提示
如果是在数据库查询(比如MongoDB)或文本处理工具中使用,记得根据工具特性添加相应选项:
- 若
source字段内容可能包含换行,需开启让.匹配换行的选项(比如MongoDB的$options: "s",或正则的s修饰符),避免因为换行导致匹配失效。
内容的提问来源于stack exchange,提问作者Sklavit
相关产品推荐
相关产品推荐

