我可以使用正则表达式来获取子字符串

时间:2012-09-03 15:22:28

标签: regex

我有一个excel文件,其中包含CDFSDDRCxxxCurryymmdd.xls(x),其中xxx是数字,yymmdd是日期。

我使用这段代码从文件名中获取Cxxx。

GetCompanyIdResult cmpId =
                    PantareiDataClasses.GetCompanyId(Application.ActiveWorkbook.Name.Substring(7, 4)).FirstOrDefault();

在我的代码中的某处,我使用这段代码来检查文件是否具有正确的名称。所以我想知道我是否可以使用正则表达式从我的文件名中查找和检索Cxxx而不是使用字符串操作。

这可能吗? 瑞·马丁斯

Match nameIsValid = Regex.Match(activeWorkbook.Name,
                                      @"CDFSDDRC(?<xxx>[0-9]+)Curr(?<yymmdd>[0-9][0-9][0|1][0-9][0-3][0-9])\.xls?");

                switch (nameIsValid.Success)
                {
                    case false:
                        throw new DdrFileNameFormatNotValid("DDR file has a wrong name format");
                }

1 个答案:

答案 0 :(得分:0)

你的正则表达式看起来很好。现在,您只需使用nameIsValid.Groups["xxx"].Value

提取指定的捕获组
string input = "CDFSDDRC123Curr120903.xls(x)";      
Match nameIsValid = Regex.Match(input, @"CDFSDDRC(?<xxx>[0-9]+)Curr(?<yymmdd>[0-9][0-9][0|1][0-9][0-3][0-9])\.xls?");
if (nameIsValid.Success) {
  string key = nameIsValid.Groups["xxx"].Value;
  Console.WriteLine(key);
}

要提取日期部分,请改用nameIsValid.Groups["yymmdd"].Value

<强> DEMO