###匹配字符串——从一段数据中提取自己所需要的数据信息###
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