马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我之所以想学。NET,是因为一直觉的BILLGATES好厉害,希望有一天能去微软,虽然现在还距离遥远,呵呵:)刘彦青
几年来,很多的编程言语和工具都包括对正则表达式的撑持,.NET基本类库中包括有一个名字空间和一系列能够充实发扬划定规矩表达式能力的类,并且它们也都与将来的Perl5中的划定规矩表达式兼容。
别的,regexp类还可以完成一些其他的功效,比方从右至左的分离形式和表达式的编纂等。
在这篇文章中,我将扼要地先容System.Text.RegularExpression中的类和办法、一些字符串婚配和交换的例子和组布局的具体情形,最初,还会先容一些你大概会用到的罕见的表达式。
应当把握的基本常识
划定规矩表达式的常识多是很多编程职员“常学常忘”的常识之一。在这篇文章中,我们将假定你已把握了划定规矩表达式的用法,特别是Perl5中表达式的用法。.NET的regexp类是Perl5中表达式的一个超集,因而,从实际上说它将作为一个很好的出发点。我们还假定你具有了C#的语法和.NET架构的基础常识。
假如你没有划定规矩表达式方面的常识,我倡议你从Perl5的语法动手入手下手进修。在划定规矩表达式方面的威望书本是由杰弗里·弗雷德尔编写的《把握表达式》一书,关于但愿深入了解表达式的读者,我们激烈倡议浏览这本书。
RegularExpression组合体
regexp划定规矩类包括在System.Text.RegularExpressions.dll文件中,在对使用软件举行编译时你必需援用这个文件,比方:
cscr:System.Text.RegularExpressions.dllfoo.cs
命令将创立foo.exe文件,它就援用了System.Text.RegularExpressions文件。
名字空间简介
在名字空间中仅仅包括着6个类和一个界说,它们是:
Capture:包括一次婚配的了局;
CaptureCollection:Capture的序列;
Group:一次组纪录的了局,由Capture承继而来;
Match:一次表达式的婚配了局,由Group承继而来;
MatchCollection:Match的一个序列;
MatchEvaluator:实行交换操纵时利用的代办署理;
Regex:编译后的表达式的实例。
Regex类中还包括一些静态的办法:
Escape:对字符串中的regex中的本义符举行本义;
IsMatch:假如表达式在字符串中婚配,该办法前往一个布尔值;
Match:前往Match的实例;
Matches:前往一系列的Match的办法;
Replace:用交换字符串交换婚配的表达式;
Split:前往一系列由表达式决意的字符串;
Unescape:不合错误字符串中的本义字符本义。
复杂婚配
我们起首从利用Regex、Match类的复杂表达式入手下手进修。
Matchm=Regex.Match("abracadabra","(a|b|r)+");
我们如今有了一个能够用于测试的Match类的实例,比方:if(m.Success)...
假如想利用婚配的字符串,能够把它转换成一个字符串:
Console.WriteLine("Match="+m.ToString());
这个例子能够失掉以下的输入:Match=abra。这就是婚配的字符串了。
字符串的交换
复杂字符串的交换十分直不雅。比方上面的语句:
strings=Regex.Replace("abracadabra","abra","zzzz");
它前往字符串zzzzcadzzzz,一切婚配的字符串都被交换成了zzzzz。
如今我们来看一个对照庞大的字符串交换的例子:
strings=Regex.Replace("abra",@"^s*(.*?)s*$","$1");
这个语句前往字符串abra,其前导和后缀的空格都往失落了。
共7页:上一页1[2][3][4][5][6][7]下一页
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。 |