zoukankan      html  css  js  c++  java
  • 正则学习笔记

    本片正则笔记主要包括分组匹配,正则委托实现,正则中实现注释       

    /// <summary>

            /// 正则分组匹配:例如,翻转ip
            /// </summary>
            /// <param name="match"></param>
            /// <returns></returns>
            static string RegexMahtEval(Match match)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append(match.Groups["part4"] + ".");
                sb.Append(match.Groups["part3"] + ".");
                sb.Append(match.Groups["part2"] + ".");
                sb.Append(match.Groups["part1"] );
                return sb.ToString();
            }

            /// <summary>
            /// 使用这则委托
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                #region 正则表达式分组
                //正则表达式分组
                //可以简写成这样
                /* @"(?<part1>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
                             @"\k<part1>\." +
                              @"\k<part1>\." +
                               @"\k<part1>\.";**/
                //但为了区分分组所匹配的内容,用了不同的命名;

                string pattern = @"(?<part1>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
                              @"(?<part2>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
                              @"(?<part3>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
                               @"(?<part4>[01]?\d\d?|2[0-4]\d|25[0-5])";
                #endregion

                string strMatch = "**192.168.1.1 ssss195.168.1.126^^^";
                Regex regex = new Regex(pattern);
                Match match = regex.Match(strMatch);//返回匹配的math;
                //matchEvaluator委托:用法,每当找到一个匹配就调用这个委托来执行你自己的方法
                MatchEvaluator mEval = new MatchEvaluator(Form1.RegexMahtEval);
                textBox1.Text = regex.Replace(strMatch, mEval);
                
            }

            private void Form1_Load(object sender, EventArgs e)
            {

            }

            /// <summary>
            /// 使用正则分组
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button2_Click(object sender, EventArgs e)
            {
                string pattern = @"(?<part1>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
                                @"(?<part2>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
                                @"(?<part3>[01]?\d\d?|2[0-4]\d|25[0-5])\." +
                                 @"(?<part4>[01]?\d\d?|2[0-4]\d|25[0-5])";

                string strMatch = "**192.168.1.1 ssss195.168.1.126^^^";
                Regex regex = new Regex(pattern);
                //命名组 :简单的使用${name}语法,name就是组名;
                //使用$&来引用完整的文本;
                //使用s'  替换输入字符窜中某个匹配之间直到匹配之前匹配的部分如:【**192.168.1.1 ssss195.168.1.126^^^】 匹配为:195.168.1.126 s'为^^^
                //使用s`    【备注`为数字键1前那个符号】替换匹配后所有文本。如:【**192.168.1.1 ssss195.168.1.126^^^】 匹配为:195.168.1.126 s`为**192.168.1.1 ssss

                string replace = @"${part4}.${part3}.${part2}.${part1}" +
                    "(the reverse of $&)" + "\r\n" +
                    "(using  $ ` of  $`)" + "\r\n" +
                    "(using $ 'of  $')" + "\r\n-----------------------\r\n";

                textBox1.Text = regex.Replace(strMatch, replace);


            }

            /// <summary>
            /// Regex中正则匹配匹配表达式写注释 以#开头写内容换行结束
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button3_Click(object sender, EventArgs e)
            {
                string pattern = @"#fisrt part match 
    (?<part1>[01]?\d\d
    # or  
    ?|2[0-4]\d|25[0-5])\.
    #or
    (?<part2>[01]?\d\d?|2[0-4]\d|25[0-5])\.
    #or
                              (?<part3>[01]?\d\d?|2[0-4]\d|25[0-5])\.
    #or
                               (?<part4>[01]?\d\d?|2[0-4]\d|25[0-5])";
                string strMatch = "**192.168.1.1 ssss195.168.1.126^^^";
                Regex regex = new Regex(pattern, RegexOptions.IgnorePatternWhitespace);
                Match match = regex.Match(strMatch);
                while (match.Success)
                {
                    textBox1.Text += match.Value;
                    match = match.NextMatch();
                }

            }
  • 相关阅读:
    【搜索】棋盘 luogu-3956
    【动态规划】石子合并 luogu-1880
    【动态规划】合唱队形 luogu-
    【模拟】报名签到 luogu-4445
    【排序+贪心】导弹拦截 luogu-1158
    【模拟】不高兴的津津
    【模拟】选数 luogu-1037
    「JOISC2020」建筑装饰 4
    「清华集训」小 Y 和恐怖的奴隶主
    「CF708E」Student's Camp
  • 原文地址:https://www.cnblogs.com/yang0000meng/p/1686287.html
Copyright © 2011-2022 走看看