ASP.NET网站制作之正则表达式的3种婚配形式
在VC.net的版本上,为了让C++运行在.NETFramework中,微软为C++引进了托管,就是托管C++(ManagedC++),这个根本就没有流行起来,自托管C++产生以后就没有收到过好评。正则表达式是处置字符串的经常使用工具。在C#中,我们一样平常利用Regex类来暗示一个正则表达式。一样平常正则表达式引擎撑持以下3种婚配形式:单行形式(Singleline)、多行形式(Multiline)与疏忽巨细写(IgnoreCase)。1.单行形式(Singleline)
MSDN界说:变动点(.)的寄义,使它与每个字符婚配(而不是与除
以外的每一个字符婚配)。
利用单行形式的典范场景是猎取网页源码中的信息。
示例:
我们利用WebBrowser控件,从http://www.xxx.com/1.htm上猎取了以下HTML源码,它存储在变量str中:
<html>
<body>
<div>
Line1
Line2
</div>
</body>
</html>
我们想把div标签和个中的内容提掏出来,编写代码以下:
stringpattern=@"<div>.*</div>";
Regexregex=newRegex(pattern);
if(regex.IsMatch(str))
Console.WriteLine(regex.Match(str).Value);
else
Console.WriteLine("Mismatch!");
//了局为:Mismatch!
毛病剖析:
一样平常以为点标记(.)是婚配恣意单个字符的,而(.*)就是婚配恣意多个字符。但实践上点标记不克不及婚配换行符。在Windows中与它等效的表达式为[^
]。
而我们从网站上猎取的HTML源码,少少有不换行的。这时候候单行形式派上用处了,它能够改动点标记的意义。修正regex实例的机关函数,用RegexOptions.Singleline来声明利用单行形式:
stringpattern=@"<div>.*</div>";
Regexregex=newRegex(pattern,RegexOptions.Singleline);
if(regex.IsMatch(str))
Console.WriteLine(regex.Match(str).Value);
else
Console.WriteLine("Mismatch!");
/*
了局为:
<div>
Line1
Line2
</div>
*/
单行形式的嵌进润色符:
我们能够间接在正则表达式中嵌进单行形式:
(?s)<div>.*</div>
(?s)润色符申明,厥后面的表达式接纳单行形式。以是利用时请不要将它放在开端。别的可使用(?-s)封闭单行形式。
注重:嵌进形式的优先级要高于Regex类的RegexOptions设置,以是利用了(?s)后,不管是不是利用RegexOptions.Singleline,均依照单行形式剖析。
2.多行形式(Multiline)
MSDN界说:变动^和$的寄义,使它们分离在恣意一行的行首和行尾婚配,而不单单在全部字符串的开首和开头婚配。
示例:
有一个文本文件,它的每行是一个用户名,将文件读进变量str中举行处置。其内容以下:
二十四画生
TerryLee
莫相会
DflyingChen
Rainy
借用博客园列位先辈的台甫:)
我们想找出一个利用英笔墨母开首的用户名,编写代码以下:
stringpattern=@"^+.*";
Regexregex=newRegex(pattern);
if(regex.IsMatch(str))
Console.WriteLine(regex.Match(str).Value);
else
Console.WriteLine("Mismatch!");
//了局为:Mismatch!
毛病剖析:
(^)是字符串的肇端锚定,str的第一个字符是一其中笔墨,以是婚配不上。我们就能够利用多行形式来改动(^)的寄义,使它婚配每行的肇端,而不是全部字符串的肇端。
变动代码以下:
stringpattern=@"^+.*";
Regexregex=newRegex(pattern,RegexOptions.Multiline);
if(regex.IsMatch(str))
Console.WriteLine(regex.Match(str).Value);
else
Console.WriteLine("Mismatch!");
//了局为:TerryLee
同时,多行形式也会改动($)的寄义,使它婚配每行的开头,而不是全部字符串的开头。
与(^)和($)分歧的是,(A)和()其实不受多行形式的影响,永久婚配全部字符串的肇端和开头。
多行形式的嵌进润色符:(?m)与(?-m)
3.疏忽巨细写(IgnoreCase)
MSDN界说:指定不辨别巨细写的婚配。
这个形式很简单了解,它以为巨细写字符是不异的。我们仍以上例来讲明。
示例:
stringpattern=@"^+.*";
Regexregex=newRegex(pattern,RegexOptions.Multiline|RegexOptions.IgnoreCase);
if(regex.IsMatch(str))
Console.WriteLine(regex.Match(str).Value);
else
Console.WriteLine("Mismatch!");
//了局为:TerryLee
剖析:请注重此次利用的正则表达式,我们并没有写进年夜写字母,但却婚配了以年夜写字母开首的名字,这就是疏忽巨细写的效果。
疏忽巨细写的嵌进润色符:(?i)与(?-i)
总结:
最初我们用一个表格来总结一下这三个形式
界说影响的表达式RegexOptions列举嵌进标识符
单行形式变动点(.)的寄义,使它与每个字符婚配(而不是与除
以外的每一个字符婚配)。.Singleline(?s)
多行形式变动^和$的寄义,使它们分离在恣意一行的行首和行尾婚配,而不单单在全部字符串的开首和开头婚配。^$Multiline(?m)
疏忽巨细写指定不辨别巨细写的婚配。IgnoreCase(?i)
语言是不是不是最重要的? 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。 微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。 众所周知,Windows以易用而出名,也因此占据不少的服务器市场。 我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。 主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
页:
[1]