A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姚团结 高级黑马   /  2013-10-9 12:22  /  3163 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

            //简单认识正则表达式的概念
            Console.WriteLine("abc".StartsWith("a"));//验证字符串开头是否与指定 的字符串匹配(类似正则,但必须相同)
            //打印结果:true
            Console.WriteLine(Regex.IsMatch("abc","..."));//true、最简单的正则表达式
            Console.WriteLine(Regex.IsMatch("ab1", "..."));//true

            string str = "a9834963475ahg";//把数字替换为‘-’
            Console.WriteLine(Regex.Replace(str, "\\d", "-"));//\d代表数字模式
            Console.WriteLine(str.Replace("\\d", "-"));//string 类只能实现指定字符的替换,而不适用模式


            Regex r = new Regex("aaa");//定义正则表达式r,并新建匹配项
            Match m = r.Match("123aaa456");//匹配结果
            if (m.Success)//判断匹配是否成功
            {
                Console.WriteLine(m.Index);
            }
            else
            {
                Console.WriteLine("未成功匹配");
            }

            //while (true)
            //{
                //string str1 = Console.ReadLine();
                //Console.WriteLine(Regex.IsMatch(str1, "[a-z](4)"));//不明原因错误
            //}

            //初步认识正则表达式中的. * +
            Console.WriteLine(Regex.Match("hdtdgfd", "a"));//匹配不成功,返回empty;成功匹配,返回匹配成功的字符
            Console.WriteLine(Regex.Match("45352w", "."));//.通配符:与除 \n 之外的任何单个字符匹配。
            Console.WriteLine(Regex.Match("aaaa", "a*"));//匹配上一个元素零次或多次。aaaa
            Console.WriteLine(Regex.Match("aaaa", "a+"));//匹配上一个元素零次或多次。aaaa
            Console.WriteLine(Regex.Match("aaaa", "a?"));//匹配前面的元素零次或一次。a
            Console.WriteLine(Regex.Match("ran","rai?n"));//"rai? n"“ran”和“rain”
            Console.WriteLine(Regex.Match("34a256a6345a6", "\\d{3,40}"));//{3,40}是匹配的字符数量,最少3个,最多40:结果256

            //简单的ip输入验证匹配(bug超多,待完善)
            Console.WriteLine(Regex.IsMatch("132.23.23.43", "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));//true
            Console.WriteLine(Regex.IsMatch("132.23.23.43a", "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));//true
            Console.WriteLine(Regex.IsMatch("132.24563.23.43", "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));//false

            Console.WriteLine("范围");

            //正则表达式中的范围
            //[字符分组],与 character_group 中的任何单个字符匹配。 默认情况下,匹配区分大小写
            Console.WriteLine(Regex.IsMatch("a","[abc]"));
            //与不在 character_group 中的任何单个字符匹配。 默认情况下,character_group 中的字符区分大小写
            Console.WriteLine(Regex.IsMatch("a","[^abc]"));
            Console.WriteLine(Regex.IsMatch("a","[a-z]"));//a-z之间的字母
            Console.WriteLine(Regex.IsMatch("A", "[a-z]"));//区分大小写

            //认识\s \w \d \    \b(单词边界如空格等)
            //Console.WriteLine(Regex.IsMatch("\\", "\\"));//错误:正在分析“\”- \ 在模式末尾非法。
            Console.WriteLine(Regex.IsMatch("\\", "\\\\"));//true
            //\w与任何单词字符匹配。  \w  “ID A1.3”中的“I”、“D”、“A”、“1”和“3”
            //\s与任何空白字符匹配。\w\s  “ID A1.3”中的“D”
            //Console.WriteLine(Regex.IsMatch("ID A1.3","\W"));错误:无法识别的转义字符
            Console.WriteLine(Regex.IsMatch("ID A1.3",@"\w"));//true
            //网络:有些转义字符如\w等转移字符只是正则表达式引擎认识的,C#编译器是不认识的。
            //加上@符号,这个字符串就原样传递给了正则表达式引擎了

            //空白行
            Console.WriteLine(Regex.IsMatch(" \n","^[\\s]*\\n$"));//空白字符开头,换行符结束

            //正则表达式匹配email地址   xxx@163.com
            Console.WriteLine("邮箱");
            //以不少于1个的单词字符或者下划线开始,@不少于1个单词字符,.不少于1个的单词字符结束
            Console.WriteLine(Regex.IsMatch("--dfhdg@asdg.com", "^[\\w|-]+@[\\w]+\\.[\\w]+$"));

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

1 个回复

倒序浏览
//reset、替换方法

            string pattern = "--(.+?)--";//匹配模式
            string replacement = "($1)";//匹配成功后的替代字符串,方便继续下次匹配
            string input = "He said--decisively--that the time--whatever time it was--had come.";
            foreach (Match match in Regex.Matches(input, pattern))
            {
                string result = match.Result(replacement);
                Console.WriteLine(result);
                Console.WriteLine(match.Index);//匹配结果在input中的位置
            }

            string pat = "Asd";
            Regex reg=new Regex(pat,RegexOptions.IgnoreCase);//新建匹配,不区分大小写
            MatchCollection mat = reg.Matches("Asd,asd,aSd");//所有匹配存入集合中
            foreach (Match ma in mat)
            {
                Console.WriteLine(ma);
                Console.WriteLine("sdfgs::"+ma.Groups[0].Value);//可以通过下标访问集合中的值
            }

            string newstr = reg.Replace("Asd,asd,aSd", "asd");//用正则表达式替换字符
            Console.WriteLine(newstr);//reset、替换方法

            string pattern = "--(.+?)--";//匹配模式
            string replacement = "($1)";//匹配成功后的替代字符串,方便继续下次匹配
            string input = "He said--decisively--that the time--whatever time it was--had come.";
            foreach (Match match in Regex.Matches(input, pattern))
            {
                string result = match.Result(replacement);
                Console.WriteLine(result);
                Console.WriteLine(match.Index);//匹配结果在input中的位置
            }

            string pat = "Asd";
            Regex reg=new Regex(pat,RegexOptions.IgnoreCase);//新建匹配,不区分大小写
            MatchCollection mat = reg.Matches("Asd,asd,aSd");//所有匹配存入集合中
            foreach (Match ma in mat)
            {
                Console.WriteLine(ma);
                Console.WriteLine("sdfgs::"+ma.Groups[0].Value);//可以通过下标访问集合中的值
            }

            string newstr = reg.Replace("Asd,asd,aSd", "asd");//用正则表达式替换字符
            Console.WriteLine(newstr);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马