包含特定单词的正则表达式

时间:2014-01-29 07:53:26

标签: c# regex

我需要从目录中加载文件,例如:“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"

4 个答案:

答案 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

希望它会给你一个继续前进的想法。