现在的位置: 首页 > 综合 > 正文

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

2012年12月03日 ⁄ 综合 ⁄ 共 5852字 ⁄ 字号 评论关闭
        

view plaincopy to clipboardprint?
//①正则表达式 = > 匹配字符串  
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(); 
            //①正则表达式 = > 匹配字符串
            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();

输出结果为:

view plaincopy to clipboardprint?
①从右向左匹配字符串:  
匹配的位置: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  

【上篇】
【下篇】

抱歉!评论已关闭.