游戏技术文章

c# 正则表达式笔记

时间:2017-1-5 13:37:31  作者:棋牌资源网  来源:棋牌资源网  查看:7968  评论:0
内容摘要:估计要写几天看得一个不错的正则教程包括字符串教程 C#字符串和正则表达式参考手册.pdf      正则所需要的命名空间是 using System.Text.RegularExpressions  ...
估计要写几天

看得一个不错的正则教程包括字符串教程 C#字符串和正则表达式参考手册.pdf

 

     正则所需要的命名空间是 using System.Text.RegularExpressions

     它包含了8个类,用得最多是的Regex;

  Regex不仅可以用来创建正则表达式,而且提供了许多有用的方法。

  创建一个Regex对象

  new Regex(string pattern)

     new Regex(string pattern,RegexOptions options)

     第一个参数是个字符串   第二个参数正则配置的选项 有以下一些选项

  • IgnoreCase                 //是匹配忽略大小写      默认情况区分大小写
  • RightToLeft                 //从右到左查找字符串   默认是从左到右
  • None                          //不设定标志  这是默认选项,就是不设置第2个参数  表示区分大小写 从左到右
  • MultiLinc                    //指定了^和$可以匹配行的开头和结尾,也就是说使用了换行分割,每一行能得到不同的匹配
  • SingleLine                 //规定特殊字符"."匹配任一字符,换行符除外. 默认情况下特殊字符"."不匹配换行.(啥意思 都不匹配换行这个参数有啥用  没看懂)

IgnoreCase的例子

      string test = "Abcccccc";
      Regex reg = new Regex("abc");
      Console.WriteLine(reg.IsMatch(test)); //false
      Regex reg1 = new Regex("abc",RegexOptions.IgnoreCase); //不区分大小写
      Console.WriteLine(reg1.IsMatch(test));//true

RightToLeft的例子

     string test = "vvv123===456vvv";
     Regex reg = new Regex("\\d+");//  123    从左到右  匹配连续数字
     Console.WriteLine(reg.Match(test));
     Regex reg1 = new Regex("\\d+",RegexOptions.RightToLeft);
     Console.WriteLine(reg1.Match(test));//  456  从右到左  匹配连续数字

MultiLinc的例子

 
            StringBuilder input = new StringBuilder();
            input.AppendLine("A  bbbb A");
            input.AppendLine("C  bbbb C");
            
            string pattern = @"^\w";
            Console.WriteLine(input.ToString());
            MatchCollection matchCol = Regex.Matches(input.ToString(), pattern, RegexOptions.Multiline);
            foreach (Match item in matchCol)
            {
                Console.WriteLine("结果:{0}", item.Value);
            }
 

 

IsMatch()

       可以用来测试字符串,看他是否匹配正则表达式的模式.如果发现了一次匹配,就返回True.IsMatch有个静态方法重载

Regex.IsMatch(string str,string pattern);

            string str = "abcbbbbbbbb";
            string reg = @"^abc";
            Console.WriteLine(Regex.IsMatch(str,reg ));//静态的重载方法
            Regex pattern = new Regex("^abc");
            Console.WriteLine(pattern.IsMatch(str)); //生成对象上的方法

 

Replace()
        替换字符串一个匹配的模式,也有一个静态的重载方法,replace变体方法很多,我只记录我看到的

replace(string input ,string pattern,int count,int start) 第3个参数是总共替换几个,第4分参数是从字符串的什么位置开始替换

 
            string str = "123456abc";
            Regex pattern = new Regex(@"\d+");
            Console.WriteLine(pattern.Replace(str,"6666"));
            string pattern1 = @"\d+";
            Console.WriteLine(Regex.Replace(str,pattern1,"6666"));

            string str1 = "asd,sss,asd,asdf,jjjj,cccc";
            Regex pattern2 = new Regex(@"\w+");
            Console.WriteLine(pattern2.Replace(str1, "v5v5", 2));
            Console.WriteLine(pattern2.Replace(str1, "v5v5", 2,8));
            // Console.WriteLine(Regex.Replace(str1, @"\w+", "v5v5", 2)); 静态方法好像不行  会报错 哈哈
 


Match()

      获得匹配的内容(只是一次的 MatchCollection可以获得所有的的匹配的集合)

      生成的对象上的方法   的用法

      reg.Match(string input,int start,int length)

      第一个参数是要处理的字符串  第二哥参数开始的位置  第3个参数是需要匹配的长度。第2第3个参数可以不需要

      静态方法  Regex.Match(string input , string pattern,RegexOptions options)

      第3个参数可以不要 

 
            string str = "vchaha vcoo vclielie vbguale vfgg vckk";
            Regex pattern = new Regex(@"vc\w*");
            Match matchMode = pattern.Match(str);
            while (matchMode.Success) 
            {
                Console.WriteLine(matchMode.Value);
                matchMode = matchMode.NextMatch();
            }
            Console.WriteLine("-----------------------------------");
            Match matchMode1 = Regex.Match(str, @"vc\w*");
            while (matchMode1.Success)
            {
                Console.WriteLine(matchMode1.Value);
                matchMode1 = matchMode1.NextMatch();
            }
 


Match类的一些方法

  • NextMatch        返回下一个成功匹配的match对象
  • Result
  • Value               返回匹配的字符串
  • Length             匹配的长度
  • Index               第一个匹配内容在字符串中的起始位置
  • Groups             返回一个分组对象集合
  • Success            根据是否匹配成功返回ture or false

 MatchCollection()

            Regex.Matchs会返回MatchCollection类,这个集合包含了所有的Match的集合

 
            string input = "hahaha 123xiaodi 55nihao 66chifanlema ccc333 ccc";
            Regex pattern = new Regex(@"\d+[a-z]+",RegexOptions.IgnoreCase);
            MatchCollection matchsMade = pattern.Matches(input);
            foreach (Match item in matchsMade)
            {
                Console.WriteLine(item.Value);            
            }
 
 

标签:c#正则表达式笔记 

欢迎加入VIP,【VIP售价:只要288元永久VIP会员】畅享商业棋牌游戏程序下载,点击开通!

下载说明


☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,

☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!

☉唯一站长QQ:1004003180  [人格担保-本站注重诚信!]

☉购买建议E-mail:1004003180@qq.com   源码收购 E-mail:1004003180@qq.com    

☉本站文件解压密码  【文章内都自带解压密码,每个密码不同!】


本站提供的所有源码,均来源站长提供,仅学习交流 浙ICP备09009969号

由此产生不良后果和法律责任与本站无关,如果侵犯了您的版权,请来信告知 1004003180@qq.com 将及时更正和删除! 

Copyright © 2008-2022 棋牌资源网,你身边的棋牌资源下载站    All Rights Reserved