Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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_Mongodb Query_Regex Lookarounds - Fatal编程技术网

Regex 正则表达式以匹配具有特定前缀的文件路径

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

在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.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上用链接表达式更新了帖子谢谢。这是正确的解决方案。我把它弄得太复杂了。