ASP.NET教程之对C#中正则表达式的一些解读和总结
我之所以想学。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下一页
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。 由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
页:
[1]