C# - 正则表达式 - 根据特定的命名模式匹配的文件名 [英] C# - Regex - Matching file names according to a specific naming pattern

查看:359
本文介绍了C# - 正则表达式 - 根据特定的命名模式匹配的文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个需要找到并处理它遵循一个非常特定的命名约定如下文件的应用程序。

  IABC_12345 -0_YYYYMMDD_YYYYMMDD_HHMMSS.zip 

我看不到这样做使用搜索模式,使林假设伊利诺任何简单的方法要做这样的事情我已经生成使用更简单的通配符模式的文件列表后。

 正则表达式重新=新的正则表达式( 嗒嗒); 

的foreach(FileInfo的网络连接Directory.GetFiles(路径,I * .zip文件))
{
如果(re.IsMatch(fi.Name))
//等等等等等等
}

这是这样做的最佳途径,如果是这样,我怎么会形成一个正则表达式这种文件格式相匹配?


解决方案

 字符串模式= @我[AZ] {3} _\d {5} -\d_\d {8} _\d {8} _\d {6} \.zip 
VAR匹配= Directory.GetFiles(@C:\temp)
。凡(PATH => Regex.Match(路径,模式).Success);

的foreach(在比赛中字符串的文件)
Console.WriteLine(文件); //做些什么


I have an application which needs to find and then process files which follow a very specific naming convention as follows.

IABC_12345-0_YYYYMMDD_YYYYMMDD_HHMMSS.zip

I cant see any easy way of doing this using a search pattern so Im assuming Ill have to do something like this after I have generated a list of files using a simpler wildcard pattern.

RegEx re = new RegEx("blah");

foreach(FileInfo fi in Directory.GetFiles(path, "I*.zip"))
{
    if(re.IsMatch(fi.Name))
       //blah blah blah
}

Is this the best way of doing this, and if so, how would I form a regular expression to match this file format?

解决方案

    string pattern = @"I[A-Z]{3}_\d{5}-\d_\d{8}_\d{8}_\d{6}\.zip";
    var matches = Directory.GetFiles(@"c:\temp")
        .Where(path => Regex.Match(path, pattern).Success);

    foreach (string file in matches)
        Console.WriteLine(file); // do something

这篇关于C# - 正则表达式 - 根据特定的命名模式匹配的文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆