C#Regex以匹配目录模式

本文关键字:模式 C#Regex | 更新日期: 2023-09-27 18:01:14

我想要一个正则表达式在目录中运行。GetAllDirectories((例如

 Directory.GetDirectories(pathToMonitor, "*.*", SearchOption.AllDirectories)
.Where(path => new Regex(pattern, RegexOptions.IgnoreCase).IsMatch(path))
.ToList();

目录遵循如下模式:

[可变目录数]''$PROJECT$''$TYPE$''$BRANCH$''[可变目录数量]

我想忽略第一组[可变目录数],后面正好是3个目录。我不想包含在$BRANCH$目录之后有任何内容的目录。$TYPE$目录必须是"Ft"或"Dev"。

我有以下模式,它几乎有效。。。

string pattern = @"'w+''(Ft|Dev)''";

不幸的是,该模式还会抓取$BRANCH$文件夹之后的所有文件夹。

具体来说,文件夹列表如下:

  • C: ''用户''我''桌面''项目''开发人员''分支''
  • C: ''用户''我''桌面''项目''开发人员''分支''sub''sub
  • C: ''用户''我''桌面''项目'' Ft''分支''子''子
  • C: ''用户''我''桌面''项目'' Ft''分支''
  • C: ''Users''Me''Desktop''Project''Ca''Branch''
  • C: ''Users''Me''Desktop''Project''Ca''Branch''sub''sub

应该在regex:之后过滤如下

  • C: ''用户''我''桌面''项目''开发人员''分支
  • C: ''用户''我''桌面''项目'' Ft''分支

编辑:清理了目录模式上的格式设置

C#Regex以匹配目录模式

您可以使用以下模式:

@"'w''(?:Ft|Dev)''Branch''?$"

其中,$是字符串末尾的锚点。