我需要从目录中加载文件,例如:“Client_Test_delete.xlsx”。但加载所有 扩展名为_delete.xlsx的文件。如何创建有效的testMask?
var testMask = @"^[Client]+(.*_delete.xlsx*).*$";
var searchPattern = new Regex(testMask, RegexOptions.IgnoreCase);
var files = Directory.GetFiles(fullPath).Where(f => searchPattern.IsMatch(f));
目录中的文件:
c:\Client_Test_delete.xlsx"
c:\Some_Test_delete.xlsx"
答案 0 :(得分:2)
System.IO.Directory.GetFiles有一个具有搜索模式的重载,试试这个。它更简单。 [我不知道正则表达式]
http://msdn.microsoft.com/it-it/library/ms143316%28v=vs.110%29.aspx
答案 1 :(得分:2)
string txt="Client_Test_delete.xlsx";
string re1="(Client)"; // Word 1
string re2=".*?"; // Non-greedy match on filler
string re3="_"; // Uninteresting: c
string re4=".*?"; // Non-greedy match on filler
string re5="(_)"; // Any Single Character 1
string re6="(delete)"; // Word 2
string re7="(\\.)"; // Any Single Character 2
string re8="(xlsx)"; // Variable Name 1
Regex r = new Regex(re1+re2+re3+re4+re5+re6+re7+re8,RegexOptions.IgnoreCase|RegexOptions.Singleline);
Match m = r.Match(txt);
if (m.Success)
{
//Delete file
}
答案 2 :(得分:1)
试试这个正则表达式:
^(:[\ W] \:)。?。?+ \ *(客户端)* _ * _ delete.xlsx
我使用客户端部分更新表达式。
匹配:“c:\ Client_Test_delete.xlsx”
并以“c:\ Some_Test_delete.xlsx”
答案 3 :(得分:1)
您可以尝试这样:
var testMask = @"^Client_[a-z\d]+_delete.xlsx?$"; // OR "^Client_[^_]+_delete.xlsx?$"
var searchPattern = new Regex(testMask, RegexOptions.IgnoreCase);
var files = Directory.GetFiles(fullPath).Where(f => searchPattern.IsMatch(f));
这将匹配包含.xlsx
或.xls
个扩展名的文件,以及第一个单词client
和最后一个单词delete
。
希望它会给你一个继续前进的想法。