Regex 在运行时替换模式的正则表达式(C#3.0)
我有一个要求 我在一个文件夹中有一些文件,其中一些文件名看起来像sayRegex 在运行时替换模式的正则表达式(C#3.0),regex,c#-3.0,Regex,C# 3.0,我有一个要求 我在一个文件夹中有一些文件,其中一些文件名看起来像say **EUDataFiles20100503.txt, MigrateFiles20101006.txt.** 基本上这些是我需要处理的文件 现在我有一个配置文件,其中提到的文件模式类型如下 EUDataFilesYYYYMMDD,migrateFilesyyymmdd 基本上,这个想法是,用户可以配置文件模式,根据上面提到的模式,我需要搜索文件夹中存在的那些文件 i、 e.在运行时,YYYYMMDD将被年、月和日期值替换。
**EUDataFiles20100503.txt, MigrateFiles20101006.txt.**
基本上这些是我需要处理的文件
现在我有一个配置文件,其中提到的文件模式类型如下
EUDataFilesYYYYMMDD,migrateFilesyyymmdd
基本上,这个想法是,用户可以配置文件模式,根据上面提到的模式,我需要搜索文件夹中存在的那些文件
i、 e.在运行时,YYYYMMDD将被年、月和日期值替换。在那里的日期并不重要(但没有时间戳;只有日期)
并且EUDataFiles或migratefile名称将在那里。(它们是固定的)
i、 e.如果文件夹的文件名为EUDataFile20100504.txt(即2010年5月4日),我应该忽略该文件,因为它不是EUDataFile20100504.txt(请注意,名称是复数-文件,而不是系统将忽略该文件的文件)
类似地,如果模式为EUDataFilesYYYYMMDD,并且存在的文件类型为EUDataFilesYYYYDDMM,则系统也应忽略
我怎样才能解决这个问题?使用正则表达式(在运行时替换模式)是否可行
如果是这样的话,有人能帮我吗
我正在使用C#3.0和dotnetframework3.5
谢谢您可以从基本文件名加上(取决于模式)子正则表达式构造正则表达式 子正则表达式可以是
yyyy = @"\d{4}"
(除非您想限制特定的年份范围)
通过按正确顺序添加正则表达式来构建正则表达式:
re = @"\AEUDataFiles" + yyyy + mm + dd + @"\.txt\Z"
然后,您可以检查找到的文件名是否与正则表达式匹配:
foundMatch = Regex.IsMatch(subjectString, re);
当然,这不是对正确日期的验证(20100231将通过),但在这种情况下这可能不是问题。您可以从基本文件名加上(取决于模式)子正则表达式构造正则表达式 子正则表达式可以是
yyyy = @"\d{4}"
(除非您想限制特定的年份范围)
通过按正确顺序添加正则表达式来构建正则表达式:
re = @"\AEUDataFiles" + yyyy + mm + dd + @"\.txt\Z"
然后,您可以检查找到的文件名是否与正则表达式匹配:
foundMatch = Regex.IsMatch(subjectString, re);
当然,这不是对正确日期的验证(20100231将通过),但在这种情况下,这可能不是问题。EUDataFilesYYYYMMDD和EUDATAFILESYYYDDMM无法清楚区分-20100112如何?EUDataFilesYYYYMMDD和EUDATAFILESYYYDDMM无法清楚区分-20100112如何?是的,但是您可以读取用户选择的模式,并相应地重新排列正则表达式,不是吗?如果用户选择DDMMYYYY,那么您需要构建're=@“\AEUDataFiles”+dd+mm+yyyy+@“\.txt\Z”'是的,但是您可以读取用户选择的模式,并相应地重新排列正则表达式,不是吗?如果用户选择DDMMYYYY,则需要构建're=@“\AEUDataFiles”+dd+mm+yyyy+@“\.txt\Z”'