当前位置:首页 > Windows程序 > 正文

数往知来C#之 正则表达式 委托 XML六

2021-03-26 Windows程序

标签:

C# 正则表达式篇

一、正则表达式
正则表达式就是一个字符串,不要想着一下子可以写出一个通用的表达式,先写,不正确再改
写正则表达式就是在找规律
关键字:Regex   
--》引入命名空间  System.Text
常用的方法
1、 匹配:
   --》Regex.IsMatch(要匹配的字符串,正则表达式); 判断指定的正则表达式和指定的字符串是否匹配
如果匹配返回true,否则返回false
 

Console.WriteLine("请输入邮政编码"); string regex = @"^\d{6}$"; if (Regex.IsMatch(Console.ReadLine(), regex)) { Console.WriteLine("输入正确"); } else { Console.WriteLine("error"); }

          

2、 提取: 
  -->Regex.Match(要提取的字符串,,正则表达式);
在指定的字符串中提取指定的正则表达式匹配的字符,  Match只提取第一个匹配到的数据。
       

string regex = @"^(http|ftp)://\w+(\.\w+)+/\w+\.\w+\?\w+=\w+(&\w+=\w+)*"; string IP = "modaorong@qq.com"; string regex = @"\w+@(\w+\.\w+)/.*"; Match m = Regex.Match(IP, regex); Console.WriteLine(m.Groups[1].Value);


   --》Regex.Matchs      
   Matchs提取所有需要的数据,
会返回一个MatchCollection集合,没一个匹配上的数据就是这个集合的一个元素
      

string time = "June 26, 1951"; string regex = @"(\w+)\s*(\d+),\s*(\d+)"; MatchCollection mc = Regex.Matches(time, regex); foreach (Match m in mc) { Console.WriteLine("月{0} 日{1} 年{2}", m.Groups[1].Value, m.Groups[2].Value, m.Groups[3].Value); }


3、提取组
()在正则表达式里的意思就是优先级和分组的意思,在正则表达式里没遇到一个左圆括号“(”就分一组,
如果没有分组那么整个匹配到的结果就是一组,也就是Groups[0],  Groups[i].Value  就是匹配到的
数据的第i组的值
    

string day = "2012/05/30"; Console.WriteLine(Regex.Replace(day, @"(\d+)/(\d+)/(\d+)", "$1年$2月$3日"));


提取网页的html代码
  --》WebClient类 (导入命名空间  System.net)
      string str=实例名.DownloadString(IP地址);      //会返回一个字符串 
提取的结果乱码可以设置encoding属性
实例名.Encoding
贪婪模式与非贪婪模式
取消贪婪模式  +号后面加个?
如果不取消贪婪模式就会尽可能多的匹配,如果一个表达式里出现多个贪婪模式,那么第一个就会尽可能多的匹配,
后面的全都会默认的变成非贪婪,当第一个标记为非贪婪模式那么第二个就会贪婪后面的非贪婪

string path = @"C:\154\2FDF\3FF\4dfgf\5dgdgd\6gd\7dgd\8dgg\9dg\0.txt"; string regex = @"(.+)\\(.+)\\(.+)\\(\w+\.\w+)";//第一个.+是贪婪模式,所以会从尽可能多的匹配,所以第一个.+会一直匹配到7dgd\这里,而第二个第三个.+此时就默认为非贪婪模式, Match mc= Regex.Match(path, regex); //第二个会匹配8dgg,第三个匹配9dg Console.WriteLine("{0}\r\n{1}\r\n{2}",mc.Groups [1].Value ,mc.Groups [2].Value ,mc.Groups [3].Value ); Console.ReadKey();

   

扩展: 反斜线(*****)
在C#中  \表示转义,   \\表示一个斜线(在文本中)   \\\\表示正则表达式中的一个斜线
在正则表达式中    \ 表示转义   \\表示一个斜线(正则表达式中)

C# 委托篇

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67622.html