我爱Aspx >> C#.Net >> 完全解读C#.NET中的正则表达式如果想使用匹配的字符串,可以把它转换成一个字符串:
Console.WriteLine("Match="+m.ToString());
这个例子可以得到如下的输出: Match=abra。这就是匹配的字符串了。
字符串的替换简单字符串的替换非常直观。例如下面的语句:
string s = Regex.Replace
("abracadabra", "abra", "zzzz");
它返回字符串zzzzcadzzzz,所有匹配的字符串都被替换成了zzzzz。
现在我们来看一个比较复杂的字符串替换的例子:
string s = Regex.Replace(" abra ", @"^\s*(.*?)
\s*$", "$1");
这个语句返回字符串abra,其前导和后缀的空格都去掉了。
上面的模式对于删除任意字符串中的前导和后续空格都非常有用。在C#中,我们还经常使用字母字符串,在一个字母字符串中,编译程序不把字符“ \” 作为转义字符处理。在使用字符“\”指定转义字符时,
@"..."是非常有用的。另外值得一提的是$1在字符串替换方面的使用,它表明替换字符串只能包含被替换的字符串。
匹配引擎的细节现在,我们通过一个组结构来理解一个稍微复杂的例子。看下面的
例子:
string text
= "abracadabra1abracadabra2abracadabra3";
string pat = @"
( # 第一个组的开始
abra # 匹配字符串abra
( # 第二个组的开始
cad # 匹配字符串cad
)? # 第二个组结束(可选)
) # 第一个组结束
+ # 匹配一次或多次
";
//利用x修饰符忽略注释
Regex r = new Regex(pat, "x");
//获得组号码的清单
int[] gnums = r.GetGroupNumbers();
//首次匹配
Match m = r.Match(text);
while (m.Success)
{
//从组1开始
for (int i = 1; i < gnums.Length; i++)
{
Group g = m.Group(gnums[i]);
//获得这次匹配的组
Console.WriteLine("Group"+gnums[i]+"=["+g.ToString()+"]");
//计算这个组的起始位置和长度
CaptureCollection cc = g.Captures;
for (int j = 0; j < cc.Count; j++)
{
Capture c = cc[j];
Ҷƪл˵?
实例学C#.net下轻松制作不规则窗..[05-07]
在.NET Framework中轻松处理XML数..[05-06]
XML在.net平台下的自定义控件的应..[05-06]
XML在.net平台下的自定义控件的应..[05-06]
在.NET Framework中轻松处理XML数..[05-06]
在.NET Framework中轻松处理XML数..[05-06]
在.NET Framework中轻松处理XML数..[05-06]
在.NET Framework中轻松处理XML数..[05-06]
Visual Basic.NET带来的新方法(一..[05-05]
Microsoft .NET Remoting:技术概..[05-05]
实例学C#.net下轻松制作不规则窗..[05-07]
火影忍者第232话(隐居婆婆的决意..[05-06]
了解WEB页面工具语言XML(六)展望[05-06]
了解WEB页面工具语言XML(五)好处[05-06]
了解WEB页面工具语言XML(四)应用..[05-06]
了解WEB页面工具语言XML(三)支持..[05-06]
了解WEB页面工具语言XML(二)定义[05-06]
了解WEB页面工具语言XML(一)产生..[05-06]
XSLT轻松入门第五章:XSLT的资源[05-06]
XSLT轻松入门第四章:XPath的语法[05-06]