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''分支
编辑:清理了目录模式上的格式设置
您可以使用以下模式:
@"'w''(?:Ft|Dev)''Branch''?$"
其中,$
是字符串末尾的锚点。