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


    用于正则表达式的 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   
    匹配的组 3192.168.0.1   
    匹配的组 42008

    ---上善若水,随遇而安。
    老子

  • 相关阅读:
    Scrum Meeting 6 -2014.11.12
    Scrum Meeting 5 -2014.11.11
    Bing词典vs有道词典比对测试报告——体验篇之成长性及用户控制权
    团队项目的用户需求及反馈
    Scrum Meeting 4 -2014.11.8
    Scrum Meeting 3 -2014.11.5
    bing词典vs有道词典对比测试报告——功能篇之细节与用户体验
    Bing词典vs有道词典比对测试报告——功能篇之辅助功能,差异化功能及软件的效能
    Bing词典vs有道词典比对测试报告
    hdu 5087 次长升序串的长度
  • 原文地址:https://www.cnblogs.com/qianduan/p/7451953.html
Copyright © 2020-2023  润新知