Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式将句子与缩写匹配_Regex_Mongodb - Fatal编程技术网

Regex 正则表达式将句子与缩写匹配

Regex 正则表达式将句子与缩写匹配,regex,mongodb,Regex,Mongodb,我正在使用正则表达式和MongoDB查询进行搜索。我想把这段文字和它的缩写匹配起来 例如,该集合类似于 {title:“机器人梦想电羊吗} 我的搜索文本可以是DADES 当前查询是 db.collection.find({title: {$regex: "android", $options: "i"}}) 我想为DADES匹配上面的条目 注:国家名称只是一个示例,文本将是动态的。根据OP给出的其他验收标准进行编辑 试试下面的正则表达式 ^([美国]\w+\s*)+(?!of)$ 这将与以下示

我正在使用正则表达式和MongoDB查询进行搜索。我想把这段文字和它的缩写匹配起来

例如,该集合类似于

{title:“机器人梦想电羊吗}

我的搜索文本可以是
DADES

当前查询是

db.collection.find({title: {$regex: "android", $options: "i"}})
我想为
DADES
匹配上面的条目


注:国家名称只是一个示例,文本将是动态的。

根据OP给出的其他验收标准进行编辑

试试下面的正则表达式

^([美国]\w+\s*)+(?!of)$

这将与以下示例相匹配

美利坚合众国

美国

这将忽略以下内容:

英国

您可以通过在
(?!of |和|或)
中添加其他要忽略的
单词


根据@pacholik的评论

db.collection.find({title:{$regex:U.*S.*.A.*,$options:i}})

给我最好的结果。我将根据搜索文本构建正则表达式


谢谢!

投反对票的人,你能解释一下原因吗?你所说的动态是什么意思?给我们更多的例子。
united
USA
匹配的逻辑是什么?是因为
united
的第一个字符也是一个单词
USA
的第一个字符吗?更多的例子和接受criteria会帮助我们的。请尝试以下操作:(\b[美国]\w*\s*)+您能否更改为类似于
U.*S.*A.*
?您可能需要添加不区分大小写的标志。几乎在这里,这个正则表达式可以工作。但是MongoDB查询不能工作。由于某些原因,
\b
在查询中不能正常工作。尝试不使用
\b
,根据您的示例,应该会得到相同的结果。哦,是的,它可以工作。但是有一个错误另一个问题。它也匹配英国
,当我搜索
美国
时,美国不会缩写为
USOA
?如果要匹配所有单词,请使用
^([USA]\w+\s*)+$
相反。在这种情况下,如果您想要
美利坚合众国
,则只匹配
美利坚合众国
,然后使用
^([USOA]\w++\s*)++$