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


            

    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  

  • 相关阅读:
    【AAAI2022】ShiftVIT: When Shift Operation Meets Vision Transformer
    【CVPR2021】Decoupled dynamic filter networks
    【ICLR2022】CrossFormer: A versatile vision transformer
    【ECCV2020】Spatially Adaptive Inference with Stochastic Feature Sampling and Interpolation
    【CVPR2022】Restormer: Efficient Transformer for HighResolution Image Restoration
    CondConv代码解析
    【ICCV2021】Context Reasoning Attention Network for Image SuperResolution
    【CVPR2021】Dynamic RegionAware Convolution
    【ARXIV2202】Visual Attention Network
    HybridSN代码修改
  • 原文地址:https://www.cnblogs.com/waters/p/Regex.html
Copyright © 2020-2023  润新知