[ 转]C# 中使用正则表达式 Regex.Matches方法的几个应用
本文转自:http://blog.csdn.net/gishero/article/details/5244463
用于正则表达式的 Regex.Matches静态方法的几种用法:
- //①正则表达式 = > 匹配字符串
- 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();
输出结果为:
- ①从右向左匹配字符串:
- 匹配的位置: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
posted on 2013-04-09 21:21 freeliver54 阅读(504) 评论(0) 编辑 收藏 举报