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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119289.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Rectified Linear Unit (ReLU)

    Rectified Linear Unit (ReLU)TheRectifiedLinearUnit(ReLU)computesthefunctionf(x)=max(0,x)f(x)=max(0,x),whichissimplythresholdedatzero.ThereareseveralprosandconstousingtheReLUs:(Pros)Comparedtosigmoid/tan

    2025年7月27日
    2
  • 如何下载pycharm以前的版本_pycharm怎么下载包

    如何下载pycharm以前的版本_pycharm怎么下载包地址:https://www.jetbrains.com/pycharm/download/previous.html点击进去就能看到各个版本的下载链接。————————————————版权声明:本文为CSDN博主「lyj156」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/lyj156/article/details/95887590…

    2022年8月25日
    5
  • kafka 集群测试

    kafka 集群测试1.ISR集合2.消费者3.brokersleader4.zookeeper

    2022年4月25日
    49
  • Java中如何遍历Map对象的4种方法

    Java中如何遍历Map对象的4种方法在Java中如何遍历Map对象HowtoIterateOveraMapinJava在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap,TreeMap,LinkedHashMap,Hashtable,等等)方法一在for-each循环中使用ent

    2022年4月19日
    73
  • csgo所有开箱网站_csgo国外开箱网站

    csgo所有开箱网站_csgo国外开箱网站CSGO国内开箱网站大全收录incsgo官网,skinsdog官网,coolkaixiang官网,88steam官网,Box818官网,Piggycase官网,Yskins官网incsgo国内CSGO饰品皮肤开箱网站官方链接:www.incsgo.gg注册登录自动免费获得$1.00美金取回状态:直接取回**优惠码:**csgogo(充值使用csgogo可增加5%充值金额)skinsdog狗网CSGO饰品皮肤开箱网站可直接取回官方链接:skinsdog.cc.

    2022年10月6日
    1
  • ArcGIS相交闭合矩形线转面

    ArcGIS相交闭合矩形线转面ArcGIS 相交闭合矩形线转面如图为两条自我闭合且相交的线现在想将其转换成如下图所示的两个独立的多边形 但直接使用 ArcGIS 的 要素转面 工具会生成五个独立的多边形 如图所示 属性记录也为 5 条 现使用另一种方式进行转换 1 要素转 json 使用工具箱中的 要素转 json 工具将线要素转成 json 的文件 2 修改 json 代码将 json 文件用编辑器打开 vs not

    2025年9月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号