在MongoDB 4.0中,我们有包含如下路径的文档:
/abcd/name.txt
/abcd/efg/name2.txt
/abcd/gha/name3.txt
/ab/gha/name3.txt
我试图用正则表达式创建一个查询,该查询将使行与指定目录(路径前缀)中的文件匹配,而不与目录匹配。例如:
name.txt
中只有文件/abcd/
。
我第一次尝试使用正则表达式是这样的:
/\/abcd\/((?!\/).)*/gm
不幸的是,这也将第二和第三行与目录匹配。
/abcd/name.txt
/abcd/efg/name2.txt
/abcd/gha/name3.txt
下次尝试是这样的:
/^(?=\/abcd\/)((?!\/).)*/gm
但是此表达式不匹配任何内容。
哪个正则表达式将与第一行(目录/ abcd /中的文件名)匹配,并排除第二和第三(目录)?
答案 0 :(得分:1)
答案 1 :(得分:1)
您不需要组和前行-这只是mongo中的正则表达式匹配。查询可能像
一样简单db.collection.find({fieldname:/^\/abcd\/[^\/]+$/})
答案 2 :(得分:0)
您需要检查扩展范围,例如:/\/abcd\/((?!\/).)*\./gm
实际操作如下:regexr