Regex 正则表达式以匹配具有特定前缀的文件路径
在MongoDB 4.0中,我们的文档包含如下路径:Regex 正则表达式以匹配具有特定前缀的文件路径,regex,mongodb,mongodb-query,regex-lookarounds,Regex,Mongodb,Mongodb Query,Regex Lookarounds,在MongoDB 4.0中,我们的文档包含如下路径: /abcd/name.txt /abcd/efg/name2.txt /abcd/gha/name3.txt /ab/gha/name3.txt 我正在尝试使用正则表达式创建一个查询,该查询将与位于指定目录(路径前缀)中但不匹配目录的文件的行相匹配。例如: /abcd/中只有文件name.txt 我第一次尝试正则表达式是这样的: /\/abcd\/((?!\/)*/gm 不幸的是,这也将第二行和第三行与目录匹配 /abcd/name.t
/abcd/name.txt
/abcd/efg/name2.txt
/abcd/gha/name3.txt
/ab/gha/name3.txt
我正在尝试使用正则表达式创建一个查询,该查询将与位于指定目录(路径前缀)中但不匹配目录的文件的行相匹配。例如:
/abcd/
中只有文件name.txt
我第一次尝试正则表达式是这样的:
/\/abcd\/((?!\/)*/gm
不幸的是,这也将第二行和第三行与目录匹配
/abcd/name.txt
/abcd/efg/name2.txt
/abcd/gha/name3.txt
接下来的尝试是这样的:
/^(?=\/abcd\/)((?!\/)*/gm
但这个表达与任何东西都不匹配
哪个正则表达式将匹配第一行(目录/abcd/中的文件名)并排除第二行和第三行(目录)?我想这就是您要做的:
/^\/abcd\/([^\/]+\.*$)/gm
您需要检查扩展名,例如:
/\/abcd\/((?!\/)*\./gm
这里的行动:您不需要分组和头像-这是mongo中唯一的正则表达式匹配。查询可以简单到
db.collection.find({fieldname:/^\/abcd\/[^\/]+$/})
请尝试
/^\/abcd\/[^\/]*$/
^
=startsWith和$
=endsWith。试着把这些operators@WiktorStribiżew:很遗憾没有匹配。展示一下你是如何使用它的。我在regexr.com上用链接表达式更新了帖子谢谢。这是正确的解决方案。我把它弄得太复杂了。