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)


相关推荐

  • oracle dmp导入导出_oracle导出数据

    oracle dmp导入导出_oracle导出数据Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用……Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp…

    2022年10月29日
  • 7.PyCharm基本使用与常规设置

    7.PyCharm基本使用与常规设置文章目录0.新建Python项目0.1步骤0.2演示1.主题设置1.1步骤1.2演示2.字体大小调整2.1步骤2.2演示3.添加多个解释器3.1步骤3.2演示3.3版本切换0.新建Python项目0.1步骤第一次安装,需要创建一个项目。如果能进入到开发界面请略过。1.NewProject2.选择路径3.选择本地环境–>选择电脑安装的解释器4.取消生成main.py脚本5.create6.进入到开发界面–>close关闭推荐提示0.2演示1.主题设置1

  • Kali安装教程(VMWare)

    Kali安装教程(VMWare)1.下载镜像及相关1.1下载镜像文件下载链接:https://www.kali.org/downloads/选择自己需要的版本下载,根据经验先下载种子文件(torrent)再用迅雷下载网速是最有保证的。1.2kali各版本说明Kali2.0使用Linux4.0内核,基于Debian8(DebianJessie)Kali—默认版本,Gnome3桌面,我一直对Gn…

  • 【C语言】输入一组整数,求出这组数字子序列和中最大值

    【C语言】输入一组整数,求出这组数字子序列和中最大值

  • fscanf()函数具体解释

    fscanf()函数具体解释

    2021年12月15日
  • matlab自带的插值函数interp1的四种插值方法

    matlab自带的插值函数interp1的四种插值方法分段线性插值,临近插值,球面插值,三次多项式插值!!

发表回复

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

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