• C#正则表达式。


    什么是正则表达式:

    正则表达式是用来进行文本处理的技术,是语言无关的。

    是由普通字符和特殊字符组成的文字模式,用来描述字符串的特征。

    元字符:

    1、  .    :  除 以外的任意的单个字符。   加 可以转义

    a.b----- 表示 a  b  之间可以有除了    的任意字符。

    2、 [ ]   :取其中一个字符(必须)。  [  a -z ]    [  a-zA-z  ] ,点出现在里面表示一个普通点。

    3、|   : 或   z|food      z或food    (z)|(f)ood     z 或f     ood  

    4、()  表示优先级    或  表示提取组

    5、*   :  a.*b       * 表示前面的表达式出现0次或多次。

    6、+ : a.+b     + 表示前面的表达式出现一次或多次 

    7、? : a.?b     ?表示前面的表达式出现0次或1次。 

    8、{}  : [0-9] {8}    固定次数    [0-9] {4,7}  最少  最多

    9、^   :  ^ a     必须以a开头。

    10、 $   :   $a  以a结尾。

    11、[  ^a ]  :   不能有a的一个字符

    12、 d  : 0-9      加@    

    13、|D   :除0-9

    14、w : 所有英文数字单字符。汉字也行  下划线 

    15、W  :  除了。。。。

    16、s  : 表示所有不可见字符。  S  :   除了。。。。。

    使用正则表达式。

        class Program
        {
            static void Main(string[] args)
            {
                //Regex.IsMatch(); //判断给定的字符串是否匹配某个正则表达式。
                //Regex.Match();  //用来从给定的字符串中按照正则表达式的要求提取【一个】匹配的字符串。
                //Regex.Matches();  //用来从给定的字符串中按照正则表达式的要求提取【所有】匹配的字符串。
                // Regex.Replace();  //替换所有正则表达式匹配的字符串为另外一个字符串。
                while (true)
                {
                    Console.WriteLine("输入一个字符串");
                    string str = Console.ReadLine();
                    //验证给定的字符串是否为合法的邮政编码。
                    //要想完全匹配,必须加 ^  和   $   .  否则只要含有就返回True
                    bool b = Regex.IsMatch(str, "^[0-9]{6}$");
                    Console.WriteLine(b);
                }
            }
        }
        }

    字符串提取:

     class Program
        {
            static void Main(string[] args)
            {
                //Regex.IsMatch(); //判断给定的字符串是否匹配某个正则表达式。
                //Regex.Match();  //用来从给定的字符串中按照正则表达式的要求提取【一个】匹配的字符串。
                //Regex.Matches();  //用来从给定的字符串中按照正则表达式的要求提取【所有】匹配的字符串。
                // Regex.Replace();  //替换所有正则表达式匹配的字符串为另外一个字符串。
    
                //提取字符串中所有匹配项。
                string str = "ss  23  哈哈  2233收索 66aa12";
                MatchCollection matches= Regex.Matches(str, "[0-9]+");
                foreach (var  item in matches)
                {
                    Console.WriteLine(item);
                }
    
            }
        }

     贪婪模式与非贪婪模式。

    贪婪:.+    :  默认为贪婪模式,尽可能多的匹配。

    非贪婪: .+?  : 尽可能少的匹配(1个)  在限定符后使用  ?  表示终止贪婪模式。

    class Program
        {
            static void Main(string[] args)
            {
                //Regex.IsMatch(); //判断给定的字符串是否匹配某个正则表达式。
                //Regex.Match();  //用来从给定的字符串中按照正则表达式的要求提取【一个】匹配的字符串。
                //Regex.Matches();  //用来从给定的字符串中按照正则表达式的要求提取【所有】匹配的字符串。
                // Regex.Replace();  //替换所有正则表达式匹配的字符串为另外一个字符串。
                string msg = "大家好,我是杨幂。我是张靓颖。我是刘德华。";
                MatchCollection matches = Regex.Matches(msg, "我是.*?。");
                foreach (var item in matches)
                {
                    Console.WriteLine(item);
                }
               
            }
        }

    提取网页上的邮箱。

    class Program
        {
            static void Main(string[] args)
            {
                //1、下载字符串。
                WebClient client = new WebClient();
                string html = client.DownloadString("file:///C:/Users//Desktop/1.html");
                //从字符串中提取邮件地址。
                MatchCollection matches = Regex.Matches(html, @"[a-zA-Z0-9]+@[a-zA-Z0-9.]+");
                foreach (Match item in matches)
                {
                    Console.WriteLine(item.Value);
                }
                Console.WriteLine("一共{0}个邮箱地址",matches.Count);
            }
        }

     正则替换:

    Regex.Replace()

    class Program
        {
            static void Main(string[] args)
            {
                string msg = "你aaa好aa啊aaaaa";
                msg = Regex.Replace(msg, "a+", "A");
                Console.WriteLine(msg);
            }
        }

    替换组实现:

     class Program
        {
            static void Main(string[] args)
            {
                //把 ' ' 里的内容替换为 【 】
                string msg = "hello 'welcom' to 'china'";
                msg = Regex.Replace(msg, "'(.+?)'", "【$1】");
                Console.WriteLine(msg);
            }
        }

    隐藏手机号:

    class Program
        {
            static void Main(string[] args)
            {
                string msg = "张玉昊 15983531955 胡云钰 15008306525";
                msg = Regex.Replace(msg, "([0-9]{3})[0-9]{4}([0-9]{4})", "$1****$2");
                Console.WriteLine(msg);
            }
        }

      的使用   判断是否为一个单词   dog  --- 是不是dog这个单词。

    提取出所有三个字母的单词:

    static void Main(string[] args)
            {
    
                string str = "this is a dog, it's not a cat.";
                MatchCollection matches= Regex.Matches(str, @"[a-zA-Z]{3}");
                foreach (Match item in matches)
                {
                    Console.WriteLine(item.Value);
                }
            }

    反向引用。 

    反向引用使用     替换引用用  $

    输出  我喜欢你

    class Program
        {
            static void Main(string[] args)
            {
    
                string str = "我我我喜喜欢你你";
                str = Regex.Replace(str, @"(.)1+","$1");
                Console.WriteLine(str);
            }
        }
  • 相关阅读:
    软件测试之功能测试简单介绍
    如果编程语言是女孩,你猜C语言是萝莉还是御姐?
    C++ C、C++、C#、VC、VC.net以及VC++有什么区别和联系?
    程序员如何避免陷入内卷?从以下三个方面着手
    懒惰使人进步,UNIX 和 Linux 新系统的诞生只是意外
    编程学习必备:C++ 学习的 11 本经典书籍推荐
    初入职场,菜鸟程序员如何才能成为业界大牛,给你提供思路方法。
    TIOBE 12月编程语言: Python、Java战况激烈, C语言:我自岿然不动
    C++基础知识篇:C++ 数字
    二本毕业程序员鄙视清北毕业生,嘲笑水货一抓一大把,你怎么看?
  • 原文地址:https://www.cnblogs.com/zhangyuhao/p/10551517.html
Copyright © 2020-2023  润新知