欢迎来到天天文库
浏览记录
ID:15952559
大小:44.50 KB
页数:6页
时间:2018-08-06
《c# regex 深入正则表达式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、正则表达式(Regularexpressions)是一套语法匹配规则,各种语言,如Perl,.Net和Java都有其对应的共享的正则表达式类库。在.Net中,这个类库叫做Regex。简单的说,Regex是从字符窗中查找匹配字符串的应用类。通过Regex,编程人员能够非常方便的从一段数据中提取自己所需要的数据信息。举一个简单的例子,让大家对Regex有个大概的了解:Regexregex=newRegex(@"d+");Matchm=regex.Match("fox9212gold");Console.WriteLine(m.Value.ToString());结果很明显,regex为我们
2、找到了字符串”fox9212gold”中的数字字符串,输出结果为”9212”.对Regex有了一个基本的概念之后,我需要告诉你一个非常好的消息,那就是Regex可以为我们做的远不止这么一点点,他是一套功能非常强大语法匹配规则。当然,这里还有一个坏消息等着我们,那就是强大功能的语法规则自然需要大量纷繁复杂的keyword支持,这也为Regex的学习带来了极大的难度。想要真正掌握正则表达式,可不是几个sample能够全部揭示与说明的。创建一个Regex对象Regex的构造函数有三种,在这里就不讨论默认构造函数了。另外两个构造函数中,一个构造函数接收正则表达式字符串作为入参,另一个以正则表达
3、式字符串和RegexOptions作为入参。如: Regexregex=newRegex("w+$");Regexregex=newRegex("s+",RegexOptions.IgnoreCase
4、RegexOptions.Multiline);RegexOptions可以为我们提供一些特殊的帮助,比如IgnoreCase能够在匹配是忽略大小写,Multiline能够调整^和$的意义,改为匹配一行的开头和结尾。上面我们构造了一个正则表达式,只不过我们还没有用它来做任何事情,马上我们就可以通过使用下面的几个方法,实现对字符串对象的操作了。匹配字符串Regex有两个获取匹配的方法Mat
5、ch()和Matches(),分别代表匹配一个,匹配多个结果。这里就用Matches来展示一下怎么使用Regex获取匹配字符串,并将其显示出来。 publicstaticvoidshowMatches(stringexpression,RegexOptionsoption,stringms){Regexregex=newRegex(expression,option);MatchCollectionmatches=regex.Matches(ms);//showmatchesConsole.WriteLine("////////////////---------------------
6、-------------////////////////");Console.WriteLine("string:"{0}" expression:"{1}" matchresultis:",ms,expression);foreach(Matchminmatches){Console.WriteLine("matchstringis:"{0}",length:{1}",m.Value.ToString(),m.Value.Length);}Console.WriteLine("matchedcount:{0}",matches.Count);}方法Matched通过比较入参字符串和
7、正则表达式,找到所有符合的结果,并将结果作为MatchCollection传出来。这样,只要简单的遍历这个collection,就可以很快的获得所有的结果。组的概念当你获得这样的一个字符串”最后比分是:19/24”,你肯定希望有一个正则表达式,他不单能够找到形如data1/data2的字符串,还应该能够直接把data1,data2作为单独的结果传送出来。否则你需要再对形如”19/24”的字符串进行分析,才能够顺利得到双方的比分。显然,正则表达式不会忽略这个问题,所以他增加了组的概念。你可以把一次搜索的结果分别放入不同的组中,并通过组名或者组的索引分别取得这些组的结果。比如上例,我们就可
8、以用@”(d+)/(d+)”作为表达式。来看看结果吧: Regexregex=newRegex(@"(d+)/(d+)");MatchCollectionmatches=regex.Matches(@"最后比分是:19/24");//showmatchesConsole.WriteLine("////////////////----------------------------------////////////////");foreac
此文档下载收益归作者所有