我必须读取一个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。 我认为我的正则表达式是好的,但是又一次。 有任何想法吗? 瑞·马丁斯
答案 0 :(得分: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?/
答案 1 :(得分:0)
CDFSDDRC(?<xxx>\d+)(?<curr>EUR|GBP)(?<yymmdd>\d{2}[0-1]\d[0-3]\d)\.xlsx?
以下适用于xls和xslx。