好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#正则函数用法实例【匹配、替换、提取】

本文实例讲述了C#正则函数用法。分享给大家供大家参考,具体如下:

System.Text.RegularExpressions 命名空间包含一些类,这些类提供对 .NET Framework 正则表达式引擎的访问。该命名空间提供正则表达式功能,可以从运行在 Microsoft .NET Framework 内的任何平台或语言中使用该功能。

1 正则表达式的常见使用

① 格式匹配

?

/// <summary>

/// 邮箱格式验证

/// </summary>

/// <returns></returns>

public static string CheckMail( string strEmail)

{

   string result = "" ;

   Regex regex = new Regex( @"[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}" );

   Match match = regex.Match(strEmail);

   if (match.Success)

   {

     result = strEmail;

   }

   else

   {

     result = "无效邮箱" ;

   }

   return result;

}

② 替换匹配内容

?

/// <summary>

/// 转换日期格式(yyyy-MM-dd 转 yyyy年MM月dd日)

/// </summary>

/// <param name="strDate"></param>

/// <returns></returns>

public static string TransDate( string strDate)

{

   string result = "" ;

   Regex regex = new Regex( @"(\d+)-(\d+)-(\d+)" );

   if (regex.IsMatch(strDate))

   {

     result = regex.Replace(strDate, "$1年$2月$3日" );

   }

   return result;

}

③ 提取匹配内容

?

/// <summary>

/// 正则表达式提取和替换内容

/// </summary>

public static string Contentextract()

{

   string result = "" ;

   string str = "大家好! <User EntryTime='2010-10-7' Email='zhangsan@163测试数据'>张三</User> 自我介绍。" ;

   Regex regex = new Regex( @"<User\s*EntryTime='(?<time>[\s\S]*?)'\s+Email='(?<email>[\s\S]*?)'>(?<userName>[\s\S]*?)</User>" , RegexOptions.IgnoreCase);

   Match match = regex.Match(str);

   if (match.Success)

   {

     string userName = match.Groups[ "userName" ].Value; //获取用户名

     string time = match.Groups[ "time" ].Value; //获取入职时间

     string email = match.Groups[ "email" ].Value; //获取邮箱地址

     string strFormat = String.Format( "我是:{0},入职时间:{1},邮箱:{2}" , userName, time, email);

     result = regex.Replace(str, strFormat); //替换内容

     Console.WriteLine(result);

   }

   return result;  //结果:大家好!我是张三,入职时间:2010-10-7,邮箱:zhangsan@163测试数据 自我介绍。

}

2 我的一个实例

?

/// <summary>

/// 从XML中提取匹配的字段

/// </summary>

/// <param name="args"></param>

static void Main( string [] args)

{

   string strXml = GetStrXml(); //创建用户信息XML

   Regex userRegex = new Regex( @"<User\s*EntryTime='(?<time>[\s\S]*?)'\s+Email='(?<email>[\s\S]*?)'>(?<userName>[\s\S]*?)</User>" , RegexOptions.IgnoreCase);

   MatchCollection userMatchColl = userRegex.Matches(strXml);

   if (userMatchColl.Count > 0)

   {

     foreach (Match matchItem in userMatchColl)

     {

       string userName = matchItem.Groups[ "userName" ].Value; //获取用户名

       string time = TransDate(matchItem.Groups[ "time" ].Value); //获取入职时间,并转换日期格式

       string email = CheckMail(matchItem.Groups[ "email" ].Value); //获取邮箱地址,并检测邮箱格式

       string strFormat = String.Format( "姓名:{0},入职时间:{1},邮箱:{2}" , userName, time, email);

       Console.WriteLine(strFormat);

     }

   }

   Console.ReadLine();

}

/// <summary>

/// 创建用户信息XML

/// </summary>

/// <returns></returns>

public static string GetStrXml()

{

   StringBuilder strXml = new StringBuilder();

   strXml.Append( "<UserInfo>" );

   strXml.Append( "<User EntryTime='2010-10-7' Email='zhangsan@163测试数据'>张三</User>" );

   strXml.Append( "<User EntryTime='2012-5-15' Email='lisi163测试数据'>李四</User>" );

   strXml.Append( "<User EntryTime='2012-6-13' Email='wangwu@qq测试数据'>王五</User>" );

   strXml.Append( "</UserInfo>" );

   return strXml.ToString();

}

希望本文所述对大家C#程序设计有所帮助。

dy("nrwz");

查看更多关于C#正则函数用法实例【匹配、替换、提取】的详细内容...

  阅读:47次