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

来源:互联网 发布:js中数组删除指定元素 编辑:程序博客网 时间:2024/06/07 02:36

正则表达式相关知识,参考MSDN文档:http://msdn.microsoft.com/zh-cn/library/az24scfc.aspx 和 http://msdn.microsoft.com/zh-cn/library/63ew9az0.aspx

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;        }    }}
原创粉丝点击