入戏如画

正则学习笔记

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

/// <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();
            }

        }

posted on 2010-03-15 15:41  问题很严重,加班吧。  阅读(279)  评论(0编辑  收藏  举报

导航

家庭日常健康生活小窍门常识妙招大全_废物利用手工制作DIY_生活百事通 儿童神话童话幼儿寓言民间鬼故事大全