C# Regex 深入正则表达式

###匹配字符串——从一段数据中提取自己所需要的数据信息###

Regex regex = new Regex(正则表达式);
Regex regex = new Regex(正则表达式, RegexOptions.None | RegexOptions.IgnoreCase | RegexOptions.Multiline);
//None 无;IgnoreCase能够在匹配是忽略大小写;Multiline调整^和$的意义,改为匹配一行的开头和结尾


Match m = regex.Match(内容字符串);   //取一个符合条件的值
Response.Write(m.Value.ToString());  //获得结果

Match matchs = regex.Matchs(内容字符串);  //取多个符合条件的值(数组)
foreach(Match m in atchs){         
    Response.Write(m.Value.ToString());   //遍历获取结果
 }
Response.Write(ms.Count);                 //数组长度
--------------------------------------------------------------------------------
###组的概念——当获的数据信息是组结构时,可用它来获取###
Regex regex = new Regex(@"(d+)/(d+)");
Match matchs = regex.Matches(@"最后比分是:19/24");

foreach(Match m in matchs)
{
  foreach(string name in regex.GetGroupNames())     //组的概念
    {
       Response.Write(("capture group"{0}"value is:"{1}"",,name,m.Groups[name].Value);
    }
}
输出:
capture group"0"value is:"19/24"
capture group"1"value is:"19"
capture group"1"value is:"24"
附:用@"(?<score1>d+)/(?<score2>d+)"替代@"(d+)/(d+)"看看结果
--------------------------------------------------------------------------------
###替换字符串###
Regex regex = new Regex(expression, option);
string result = regex.Replace(str1,str2);
//str1为原字符串;str2为替换内容,它可以包含以下一些特殊字符串,用来代表特别意义

$& 匹配的字符串,也可以用$0
$1, $2, . . . 匹配字符串中的对应组,用索引标示
${name} 匹配字符串中的对应组,用名称标示
$‘ 匹配位置之前的字符串
$’ 匹配位置之后的字符串
$$ 一个‘$’ 字符
$_ 输入字符串
$+ 匹配字符串的所有组中,最后一个组中的数据

例1:
Regex regex = new Regex(@"/d+",RegexOptions.None);
string result = regex.Replace("fef 12/21 df 33/14 727/1", "<<$&>>");
功能:所有数字型的数据都被替换成了"<<数字>>"格式
输出结果:fef <<12>>/<<21>> df <<33>>/<<14>> <<727>>/<<1>>
例2:
Regex regex = new Regex(@"(/d+)/(/d+)",RegexOptions.None);
string result = regex.Replace("fef 12/21 df 33/14 727/1", "$+");
功能:所有data1/data2匹配的数据,都被替换成了data2
输出结果:fef 21 df 14 1
例三:自定义转换公式
把”I have 200 dollars”中间的money加倍
using System.Text.RegularExpressions;
class RegularExpressions
{
   static string CapText(Match m)
    {
         string x = m.ToString();
         string result = (int.Parse(x) * 2).ToString();
         return result;
    }
   static void Main()
    {
         string text = "i have 200 dollars";
         string result = Regex.Replace(text, @"d+",new Matchuator(RegularExpressions.CapText));
         Response.Write(result);
     }
}
例三的通用函数
public static string replaceMatch(string expression, RegexOptions option, string ms,Matchuator uator)
{
   Regex regex = new Regex(expression, option);
   string result = regex.Replace(ms, uator);
   return result;
}
--------------------------------------------------------------------------------
###拆分字符串###
public static void splitMatch(string expression, RegexOptions option, string ms)
{
    Regex regex = new Regex(expression, option);
    string[] result = regex.Split(ms);
    foreach(string m in result)
    {
         Response.Write("splited string is: "{0}", length: {1}",m.ToString(), m.Length);
    }
    Response.Write("splited count: {0}", result.Length);
}
代码简单,不多做解释。直接来一个smaple看看结果:
splitMatch(@"/",RegexOptions.None, "2004/4/25");
输出:
splited string is: "2004", length: 4
splited string is: "4", length: 1
splited string is: "25", length: 2
splited count: 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值