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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JavaScript实例教程

    JavaScript实例教程第一个javascript程序javascript放在head部分javascript放在body部分javascript放在head和body部分javascrip

  • 在window操作系统下安装Django库的命令是什么?_django下载和安装教程

    在window操作系统下安装Django库的命令是什么?_django下载和安装教程Django之win7下安装与命令行工具

  • 用php怎样将图片gif转化为jpg

    用php怎样将图片gif转化为jpg

    2021年10月14日
  • JsonPath文档

    JsonPath文档1.介绍本文翻译自官方文档,JsonPath表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot–notation”和“bracket–notation”格式,例如$.store.book[0].title、$[‘store’][‘book’][0][‘title’]2.操作符符号 描述 $ 查询的根节点对象,用于表示一个json数据,可以是数组或对象…

  • pycharm如何调用anaconda环境_pycharm怎么使用anaconda环境

    pycharm如何调用anaconda环境_pycharm怎么使用anaconda环境pycharm中添加anaconda环境无效本文是经过作者多次尝试最终解决掉的。1、先说说我自己在安装anaconda之前的环境配置:我的电脑本地上安装了python3.7.4和pycharm,平常学习都能正常使用pycharm。后来因为要做深度学习,不得不安装anaconda。2、我就想着直接在原来的基础上安装anaconda算了,到时候在pycharm中新增一个CondaEnviron…

  • c语言数组介绍

    c语言数组介绍文章目录一、一维数组的创建和初始化1.数组的创建2.数组的初始化3.一维数组的使用4.一维数组在内存中的存储二、二维数组的创建和初始化1.二维数组的创建2.二维数组的创建3.二维数组的创建4.二维数组在内存中的存储二、数组越界1.数组名是什么?一、一维数组的创建和初始化1.数组的创建数组是一组相同类型元素的集合。数组的创建方式:type_tarr_name[const_n];//type_t是指数组的元素类型//const_n是一个常量表达式,用来指定数组的大小数组创建的实

发表回复

您的电子邮箱地址不会被公开。

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