我的输入将是具有完整路径的文件名列表,我只需要提取文件名严格符合以下文件名格式的项目。
通用文件名格式。
**c:\My\Path\To\File\fileName_YYYY-MM-DD_HH-MM-SS.ext**
我已经尝试遵循正则表达式模式,但我仍然看到一些噪音。
string regexPattern = @"fileName_[2-9][0-9]{3}-[0-1][0-9]-[0-3][0-9]_[0-2][0-9]-[0-5][0-9]-[0-5][0-9]\.ext$"
如果我遗漏了什么,请告诉我。
最佳答案
当你可以使用内置解析器的 DateTime
时,为什么要使用正则表达式:
string input = c:\My\Path\To\File\fileName_YYYY-MM-DD_HH-MM-SS.ext;
string filename = Path.GetFilenameWithoutExtension(input);
string[] parts = filename.Split('_');
if (parts.Length != 3) { /*Invalid*/ }
if (Path.GetExtension(input) != "ext") { /*Invalid*/ }
if (parts[0] != "filename") { /*Invalid*/ }
DateTime dt;
if (!DateTime.TryParseExact(parts[1] + "_" + parts[2], "yyyy-MM-dd_HH-mm-ss",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{ /*Invalid*/ }
//IsValid
关于c# - 正则表达式检查文件格式是否符合 C# 中的预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38095737/