gpt4 book ai didi

regex - 带括号和单词边界的 Mongodb $regex

转载 作者:可可西里 更新时间:2023-11-01 10:24:44 25 4
gpt4 key购买 nike

给定以下文档

{
"_id": "test-id",
"text": "this is some text and (0aef4666-3627-4c24-8e50-b0cf9a723823)"
}

以下 mongo 查询返回文档:

{"text":{"$regex":"\\(0aef4666-3627-4c24-8e50-b0cf9a723823\\)","$options":"iu"}}

但这个不是:

{"text":{"$regex":"\\b\\(0aef4666-3627-4c24-8e50-b0cf9a723823\\)\\b","$options":"iu"}}

我想搜索单词边界上的uid。我认为添加\b 会正确地拾取它,但它显然不匹配,即使我正在寻找的术语在文本的中间(我认为它在字符串末尾的事实可能会影响它,但它似乎不是)。

为什么这行不通,我怎样才能使括号中的术语与“整个词”相匹配?

最佳答案

这是因为 \b 只有在它的两边都有一个单词字符时才会匹配。在您的情况下, \b 被一个空格字符和一个开/关括号包围,它们都不是“单词”字符。因此 \b 匹配失败。

你可以做

\\b0aef4666-3627-4c24-8e50-b0cf9a723823\\b

这将与 \b 匹配,因为现在它位于单词边界上。

或者,您可以匹配空格或行首/行尾:

db.test.find({"text": /(^|\s)\(0aef4666-3627-4c24-8e50-b0cf9a723823\)($|\s)/i} )

关于regex - 带括号和单词边界的 Mongodb $regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com