C#正则表达式 匹配磁盘路径和文件名

class Program
{
     static  void Main( string[] args)
    {
        Regex reg =  new Regex( @" ^(?<fpath>([a-zA-Z]:\\)([\s\.\-\w]+\\)*)(?<fname>[\w]+.[\w]+) ");

        Match result = reg.Match( @" D:\Program Files\AliWangWang\7.10.07C\emotions\TaoDoll\Sniffer.dat ");

         if (result.Success)
        {
            Console.WriteLine( " [Full]: " + result.Value);

            Console.WriteLine( " [Part1]: " + result.Result( " ${fpath} "));
            Console.WriteLine( " [Part2]: " + result.Result( " ${fname} "));
        }

        Console.ReadLine();
    }

简单整理如下,方便以后调用(支持多后缀名):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Reflection;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
     class Program
    {
         ///   <summary>
        
///  路径分类
        
///   </summary>
         public  enum RouteType
        {
             ///   <summary>
            
///  仅文件名
            
///   </summary>
            NameOnly =  0,
             ///   <summary>
            
///  文件名(包括后缀)
            
///   </summary>
            FileName =  1,
             ///   <summary>
            
///  仅后缀名(包括.)
            
///   </summary>
            FileSuffix =  2,
             ///   <summary>
            
///  除文件名之外的路径
            
///   </summary>
            PathExceptName =  3,
             ///   <summary>
            
///  除后缀之外的路径
            
///   </summary>
            PathExceptSuffix =  4
        }
         ///   <summary>
        
///  程序入口函数
        
///   </summary>
        
///   <param name="args"></param>
         static  void Main( string[] args)
        {
             string strPath =  @" D:\Program Files\Advanced PDF Password Recovery\Sniffer.dat.doc.bak.zip ";

            Console.WriteLine(GetPartRoute(strPath, RouteType.NameOnly));
            Console.WriteLine(GetPartRoute(strPath, RouteType.FileName));
            Console.WriteLine(GetPartRoute(strPath, RouteType.FileSuffix));
            Console.WriteLine(GetPartRoute(strPath, RouteType.PathExceptName));
            Console.WriteLine(GetPartRoute(strPath, RouteType.PathExceptSuffix));

            Console.ReadLine();
        }
         ///   <summary>
        
///  正则获取文件路径
        
///   </summary>
        
///   <param name="strRoute"> 完整文件名 </param>
        
///   <param name="rType"> 要获取路径类型 </param>
        
///   <returns></returns>
         public  static  string GetPartRoute( string strRoute, RouteType rType)
        {
             string strResult =  string.Empty;

            Regex regex =  new Regex( @" ^(?<fpath>([a-zA-Z]:\\)([\s\.\-\w]+\\)*)(?<fname>[\w]+)(?<namext>(\.[\w]+)*)(?<suffix>\.[\w]+) ");

            Match result = regex.Match(strRoute);

             if (result.Success)
            {
                 switch (rType)
                {
                     case RouteType.NameOnly:
                        strResult = result.Result( " ${fname} ") + result.Result( " ${namext} "); break;
                     case RouteType.FileName:
                        strResult = result.Result( " ${fname} ") + result.Result( " ${namext} ") + result.Result( " ${suffix} ");  break;
                     case RouteType.FileSuffix:
                        strResult = result.Result( " ${suffix} ");  break;
                     case RouteType.PathExceptName:
                        strResult = result.Result( " ${fpath} ");  break;
                     case RouteType.PathExceptSuffix:
                        strResult = result.Result( " ${fpath} ") + result.Result( " ${fname} ") + result.Result( " ${namext} ");  break;
                     default:
                        strResult = strRoute;  break;
                }
            }

             return strResult;
        }
    }
}

点此下载

转载于:https://www.cnblogs.com/zhangpengshou/archive/2012/09/19/2693933.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值