-1

我有一个必须具有这种名称格式的 excel 文件,其中 xxx 是一个数字,Curr 是 EUR 或 GBP,yymmdd 是一个日期。

CDFSDDRCxxxCurryymmdd.xls(x)

这是我正在使用的正则表达式。它不适用于 120920 或 121005 之类的日期。有什么想法吗?

Match nameIsValid = Regex.Match(activeWorkbook.Name,
                                      @"CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{2}(?:0[1-9]|1[12])(?:(?:0|1|2)[1-9]|3[0-2]))\.xls?");
4

2 回答 2

1

此正则表达式的快速修复将是以下一个:

CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{2}(?:0[1-9]|1[012])(?:(?:0|1|2)[0-9]|3[0-2]))\.xls?

你可以在这里查看结果。

请注意,如果该月的日期为 ,则此选项将匹配00

我的观点是,您不应该在您的正则表达式中检查有效的日期、月份和年份。您可以使用以下更简单的正则表达式匹配 6 位日期:

CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{6})\.xls?

匹配后,您可以以编程方式检查它是否是有效日期。

于 2012-09-07T16:12:27.513 回答
0

这比你所拥有的要简单一些

"CDFSDDRC(\d+)(EUR|GBP)(\d{2})(\d{2})(\d{2}).xls"
于 2012-09-07T16:05:14.627 回答