您的位置:首页 > 编程语言 > C#

[ 转]C# 中使用正则表达式 Regex.Matches方法的几个应用

2013-04-09 21:21 671 查看
本文转自:http://blog.csdn.net/gishero/article/details/5244463

用于正则表达式的 Regex.Matches静态方法的几种用法:

[c-sharp] view plaincopyprint?

//①正则表达式 = > 匹配字符串

string Text = @"This is a book , this is my book , Is not IIS";

//定义一个模式字符串,不仅仅是纯文本,还可以是正则表达式

string Pattern = "is";

MatchCollection Matches = Regex.Matches(

Text,

Pattern,

RegexOptions.IgnoreCase | //忽略大小写

RegexOptions.ExplicitCapture | //提高检索效率

RegexOptions.RightToLeft //从左向右匹配字符串

);

Console.WriteLine("从右向左匹配字符串:");

foreach (Match NextMatch in Matches)

{

Console.Write("匹配的位置:{0,2} ", NextMatch.Index);

Console.Write("匹配的内容:{0,2} ", NextMatch.Value);

Console.Write("/n");

}

Console.WriteLine();

//②匹配以大写I开头

//“/b”是转义序列,代表开头和结尾(一个字的边界,忽略空白或标点)

Pattern = @"/bI";

Matches = Regex.Matches(

Text,

Pattern,

RegexOptions.ExplicitCapture //提高检索效率

);

Console.WriteLine("从左向右匹配字符串:");

foreach (Match NextMatch in Matches)

{

Console.Write("匹配的位置:{0} ", NextMatch.Index);

Console.Write("匹配的内容:{0} ", NextMatch.Value);

Console.Write("/n");

}

Console.WriteLine();

//③匹配以大写I开头,大写S结尾的字符串

//“/b”是转义序列,代表开头和结尾(一个字的边界,忽略空白或标点)

///S*匹配任何不是空白的字符

Pattern = @"/bI/S*S/b";

Matches = Regex.Matches(

Text,

Pattern,

RegexOptions.ExplicitCapture //提高检索效率

);

Console.WriteLine("从左向右匹配字符串:");

foreach (Match NextMatch in Matches)

{

Console.Write("匹配的位置:{0} ", NextMatch.Index);

Console.Write("匹配的内容:{0} ", NextMatch.Value);

Console.Write("/n");

}

Console.WriteLine();

//④匹配his 或者iis,其中忽略大小写

Pattern = @"[h|i]is";

Matches = Regex.Matches(

Text,

Pattern,

RegexOptions.IgnoreCase | //忽略大小写

RegexOptions.ExplicitCapture //提高检索效率

);

Console.WriteLine("从左向右匹配字符串:");

foreach (Match NextMatch in Matches)

{

Console.Write("匹配的位置:{0} ", NextMatch.Index);

Console.Write("匹配的内容:{0} ", NextMatch.Value);

Console.Write("/n");

}

Console.WriteLine();

//⑤对Url的分组匹配

Text = "http://192.168.0.1:2008";

Pattern = @"/b(/S+)://(/S+)(?::(/S+))/b";

Matches = Regex.Matches(Text, Pattern);

Console.WriteLine("从左向右匹配字符串:");

foreach (Match NextMatch in Matches)

{

Console.Write("匹配的位置:{0} ", NextMatch.Index);

Console.Write("匹配的内容:{0} ", NextMatch.Value);

Console.Write("/n");

for (int i = 0; i < NextMatch.Groups.Count; i++)

{

Console.Write("匹配的组 {0}:{1,4} ", i + 1, NextMatch.Groups[i].Value);

Console.Write("/n");

}

}

Console.Read();

[c-sharp] view plaincopyprint?

①从右向左匹配字符串:

匹配的位置:43 匹配的内容:IS

匹配的位置:35 匹配的内容:Is

匹配的位置:22 匹配的内容:is

匹配的位置:19 匹配的内容:is

匹配的位置: 5 匹配的内容:is

匹配的位置: 2 匹配的内容:is

②从左向右匹配字符串:

匹配的位置:35 匹配的内容:I

匹配的位置:42 匹配的内容:I

③从左向右匹配字符串:

匹配的位置:42 匹配的内容:IIS

④从左向右匹配字符串:

匹配的位置:1 匹配的内容:his

匹配的位置:18 匹配的内容:his

匹配的位置:42 匹配的内容:IIS

⑤从左向右匹配字符串:

匹配的位置:0 匹配的内容:http://192.168.0.1:2008

匹配的组 1:http://192.168.0.1:2008

匹配的组 2:http

匹配的组 3:192.168.0.1

匹配的组 4:2008

①从右向左匹配字符串:
匹配的位置:43 匹配的内容:IS
匹配的位置:35 匹配的内容:Is
匹配的位置:22 匹配的内容:is
匹配的位置:19 匹配的内容:is
匹配的位置: 5 匹配的内容:is
匹配的位置: 2 匹配的内容:is

②从左向右匹配字符串:
匹配的位置:35 匹配的内容:I
匹配的位置:42 匹配的内容:I

③从左向右匹配字符串:
匹配的位置:42 匹配的内容:IIS

④从左向右匹配字符串:
匹配的位置:1 匹配的内容:his
匹配的位置:18 匹配的内容:his
匹配的位置:42 匹配的内容:IIS

⑤从左向右匹配字符串:
匹配的位置:0 匹配的内容:http://192.168.0.1:2008
匹配的组 1:http://192.168.0.1:2008
匹配的组 2:http
匹配的组 3:192.168.0.1
匹配的组 4:2008
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: