0

我必须阅读一个 excel 文件并检查其名称是否遵循某种模式。

模式是 CDFSDDRCxxxCurryymmdd,其中 xxx 是一个数字,Curr 是 EUR 或 GBP,yymmdd 是一个日期。

这是我的文件名,CDFSDDRC603EUR120124.xls。也可以是 .xlsx。

这是我的代码。

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

我不断将 nameIsValid.success 设为 false。我认为我的正则表达式还可以,但又一次。有任何想法吗?瑞马丁斯

4

2 回答 2

0

您的日期匹配模式有些混乱。它并不真正匹配日期,而只是一个奇怪的数字组合。此外,您不能|在字符类中使用。仔细考虑日期是如何构建的。

此外,您有一个重复的匹配组,称为xxx. 这肯定会在访问其中一个时弄乱 C# 的行为。

试试这个

/CDFSDDRC(?<xxx>\d+)(?<curr>[A-Z]+)(?<yymmdd>\d{2}(?:0[1-9]|1[12])(?:(?:0|1|2)[1-9]|3[0-2]))\.xlsx?/
于 2012-09-05T13:32:04.290 回答
0
CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{2}[0-1]\d[0-3]\d)\.xlsx?

以下对 xls 和 xslx 都适用。

于 2012-09-05T13:32:11.823 回答