我有一个必须具有此名称格式的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?");
答案 0 :(得分:1)
这个正则表达式的快速修复将是以下一个:
CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{2}(?:0[1-9]|1[012])(?:(?:0|1|2)[0-9]|3[0-2]))\.xls?
您可以查看结果 here 。
请注意,如果该月的日期为00
,则此匹配将匹配。
我的意见是你不应该在你的正则表达式中检查有效的日期,月份和年份。您可以使用以下更简单的正则表达式来匹配6位数的日期:
CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{6})\.xls?
匹配后,您可以以编程方式检查它是否是有效日期。
答案 1 :(得分:0)
这比你有的简单
"CDFSDDRC(\d+)(EUR|GBP)(\d{2})(\d{2})(\d{2}).xls"