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