c#中的正则表达式的源码

来源:互联网 发布:流量软件哪个好 编辑:程序博客网 时间:2024/05/18 20:11
//正则表达式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//正则表达式需要引用的
using System.Text.RegularExpressions;

namespace Reflection
{
    
    class Program
    {
        //1.\d表示匹配数字,\D匹配所有的非数字. 表示匹配任意字符,\. 匹配.
        //2.[]表示方括号里面的每一个字符或者数字都可以匹配
        //3.c{3}表示匹配3个c,c{2,3}表示匹配最少2个c,最多3个c
        //4.*表示0个或者多个,+表示一个或者多个,?表示有或者没有
        //5.\s表示匹配空格,\S表示匹配非空格,\w匹配所有的字符,\W匹配特殊字符
        //6.正则表达式的卡头^,结束为$
        //7.()表示匹配括号里面的字符
        //8.\b表示字符的边界
        static void Main(string[] args)
        {
            RegexIsMatch();
            RegexMatch();
            RegexReplace();
            Console.ReadLine();
        }


        //isMatch用法
        private static void RegexIsMatch()
        {
            string[] values = { "111-22-3333", "111-2-3333" };
            string pattern = @"^\d{3}-\d{2}-\d{4}$";
            foreach (var value in values)
            {
                if (Regex.IsMatch(value, pattern))
                {
                    Console.WriteLine("{0} is valid", value);
                }
                else
                {
                    Console.WriteLine("{0} is not valid", value);
                }
            }
        }


        private static void RegexMatch()
        {
            var input = "This is cdc cdc!";
            var pattern = @"\b(\w+)\W(\1)\b";
            Match match = Regex.Match(input, pattern);
            while (match.Success)
            {
                Console.WriteLine("Duplication {} found", match.Groups[1].Value);
                match = match.NextMatch();
            }
        }

        //正则表达式实现替换
        private static void RegexReplace()
        {
            string patten = @"\b\d+\.\d{2}\b";
            //最后一个$&表示匹配上的字符
            string replacement = "$$$&";
            string input = "total cost:103.64";
            Console.WriteLine(Regex.Replace(input, patten, replacement));
        }

        //正则表达式实现分割
        private static void RegexSplit()
        {
            string input = "1. Egg 2. Bread 3. Mike";
            string patten = @"\b\d{1,2}\.\s";
            foreach (string item in Regex.Split(input, patten))
            {
                if (!string.IsNullOrEmpty(item))
                {
                    Console.WriteLine(item);
                }
            }
        }

        private static void Matches()
        {
            MatchCollection matches;
            Regex r = new Regex("abc");
            matches = r.Matches("123abc4abcd");//获得集合
            foreach (Match match in matches)
            {
                Console.WriteLine("{0} found at position {1}", match.Value, match.Index);
                Console.WriteLine("{0}", match.Result("$&, hello,cdc!"));//$&表示匹配的字符
            }
        }



        //mach.Groups的使用
        private static void Groups()
        {
            string input = "Born: July 28, 1989";
            string patten = @"\b(\w)\s(\d{1,2}),\s(\d{4})\b";
            Match match = Regex.Match(input, patten);
            if (match.Success)
            {
                for (int ctr = 0; ctr < match.Groups.Count; ctr++)
                {
                    Console.WriteLine("Group{0}:{1}", ctr, match.Groups[ctr].Value);
                }
            }
        }
    }
}

原创粉丝点击