正则表达式匹配某些子文件夹,并忽略其子文件夹

时间:2019-04-08 17:32:40

标签: regex hive regex-group

我正在尝试使用正则表达式来匹配包含.Trash文件的所有文件夹,但是当我们找到带有.Trash的某个层子文件夹时,我就不想匹配。

我正在使用/[^/]+/*.Trash,但它也与.Trash的子文件夹匹配。
如何忽略子文件夹?

例如:

/a/b/.Trash+other words -> good
/a/b/.Trash  -> good
/a/b/.blahTrash -> good
/a/.Trash -> good
/a/b/.Trash/c/d -> bad, because we already found /a/b/.Trash

因为.Trash后面还可以有其他字符或数字,所以我不能使用.Trash而不是/

2 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式:

^(?:\/[^\/\s]+)+Trash[^\/]*$

演示:https://regex101.com/r/lRp4lF/3/

/a/b/.Trash -> good
/a/b/.Trash+other words -> good
/a/b/.Trash  -> good
/a/b/.blahTrash -> good
/a/.Trash -> good
/a/b/.Trash/c/d -> bad

答案 1 :(得分:0)

您可能会从中得到一些想法。

**(.*trash[^\/]+)**

Match 1
1.  /a/b/.Trash+other words -> good
Match 2
1.  /a/b/.Trash -> good
Match 3
1.  /a/b/.blahTrash -> good
Match 4
1.  /a/.Trash -> good

https://rubular.com/r/kGvbSIkHFfT9dM