-1

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 に答える