>> 栏目列表
  >>  北大青鸟类
  >>  课程方向类
  >>  学时学费类
  >>  软件技术类
  >>  网络技术类
  >>  学习类
  >>  就业类
  >>  紧缺岗位类

北大青鸟高考招生简章 网络工程师课程 大数据开发 软件工程师课程 安卓课程 Java软件开发
  >> 开班日期
  >> 试听讲座
讲座日期:本周六下午1点30分
讲座地点:北大青鸟华腾校区
主讲老师:王老师 金牌讲师
讲座主题:网络安全
讲座内容:检测、防御、黑客信息,如何过滤不安全的网站,如何防御黑客的进攻等。
订座电话:010-82011432/33
您当前位置:主页 > 了解详细 > 软件技术类 >
.net中使用正则表达式
2011-05-16 10:58



北京北大青鸟马甸校区网络培训基地

 

在写.net程序时,常会写一些邮件,电话,身份证,邮编等数据,利用验证控件自身的功能很难满足上学需求,如何让我们更加合理的利用正则表达式呢,我们一起来学习一下
正则表达式(regular expression)是用来快速、高效地处理文本数据的工具。被处理的文本可以小到一个电子邮件地址,也可以大到一个多行文本输入框中的文本数据。正则表达式不仅可用来确认一段文本是否与一个预定义的模式相匹配,还可以用于从文本中抽取符合某一模式的数据。

正则表达式可以被看成是一个强大的通配符(通用匹配符号)。大多数人都应该很熟悉通配符,例如,当我们看到一个诸如“SAMS”的表达式,那么一个文本串中任何以SAMS开头的字符串都可以与这个表达式匹配。正则表达式提供了比这种通配符能力更强、控制规则更复杂、功能更完善的匹配机制。

本文将对.NET框架提供的支持正则表达式的类做一个概要介绍。要想获得有关正则表达式的更多知识,可参考《Regular Expression Pocket Reference 》(O’Reilly Media出版社,ISBN:059600415X)或《Mastering Regular Expressions》,2nd Edition (O’Reilly Media出版社,ISBN:0596002890)等书籍。它们可以教会你如何创建正则表达式,并提供了最常用的正则表达式列表。

输入确认

正则表达式最重要的用途之一,是确认某个输入的文本是否符合一个预定义的格式。例如,一个能够作为密码的字符串通常要遵循某些强制的规则,以使得密码字符串难以被破解。这些规则常常被定义为正则表达式。正则表达式也常常用来对一些简单的输入执行确认,如确认email地址和电话号码。

RegEx类是.NET框架中一个处理正则表达式的关键类。RegEx类包含了一个名为IsMatch的静态方法,它返回一个布尔值,这个布尔值说明指定的输入串是否与一个给定的正则表达式匹配。

下面的代码中,用到了一个常用的正则表达式,用来测试一个email地址是否有效:

string emailPattern = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)||[ccc] (([\w-]+\.)+))([a-zA-Z]{2,4}||[0-9]{1,3})(\]?)___FCKpd___0quot;; Console.Write("Enter an e-mail address:");string emailInput = Console.ReadLine();bool match = Regex.IsMatch(emailInput, emailPattern);if (match) Console.WriteLine("E-mail address is valid.");else Console.WriteLine("Supplied input is not a valid e-mail address.");


不要担心上面的正则表达式是否有意义。电子邮件模式背后隐藏的基本思想是,它必须包含一些字符,然后是一个@标记,接着是跟在“.”之后的一些字符组合,“.”之后至少要有两个字符。你可以试着在上面的程序段中使用不同的文本作为输入,并观察程序执行的结果。即使你不理解正则表达式本身的含义,也没有关系。只要知道存在正则表达式这样一种工具,并且它可以用来对输入进行确认,这对于你编写应用程序将是极有帮助的。

从输入中抽取数据

正则表达式另一个常见用途是用来分析文本,并从用户的输入中抽取数据(称为组匹配)。

C#中的正则表达式包含了一个称为组(group)的独特特征。使用组,可以为正则表达式中特定的段赋予一个标识符名称。当调用match()方法对模式和输入数据进行比较时,比较的结果实际上是按照组拆分被匹配的符号串,这样就允许你从输入中抽取与每个组相匹配的部分。

例如,我们可以在前一个例子中创建一个名为username的组,用它从一个email地址中提取所有位于@之前的符号串。这样,在执行匹配时,就可以应用正则表达式中的命名组来抽取用户名信息。

看看下面的代码示例,它说明如何从用户在控制台输出的URL地址中同时抽取协议名和端口号。正则表达式的一个良好特性是它自身构成了一个语言,这个语言与C、C++、C#或任何其他编程语言没有依赖关系。这使得我们可以容易地从互联网或参考文献的应用案例中借用某些常用的正则表达式。例如,下面例程中的正则表达式借用自MSDN中的一个例子:

string urlPattern = @"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/";Console.WriteLine();Console.Write("Enter a URL for data parsing: ");string url = Console.ReadLine();Regex urlExpression = new Regex(urlPattern, RegexOptions.Compiled);Match urlMatch = urlExpression.Match(url);Console.WriteLine("The Protocol you entered was " + urlMatch.Groups["proto"].Value);Console.WriteLine("The Port Number you entered was " + urlMatch.Groups["port"].Value);


运行上面的例程时,如果为它输入一个没有端口号的URL,你将会注意到程序不输入任何组的匹配值。这是因为输入的文本与正则表达式根本不匹配。当输入与正则表达式不匹配时,显然就不能够利用任何命名的组来抽取有意义的数据。如果为上面的例程输入一个带端口号并且与正则表达式匹配的URL,程序产生的输出将如下所示:

Enter a URL for data parsing: http://ryyxdlzyw.dc359.com:2100/home.aspxThe Protocol you entered was httpThe Port Number you entered was :2100
===============================================================================
北京北大青鸟马甸校区网络培训基地

 

 


上一篇:北大青鸟.net  
下一篇:北大青鸟怎么样
相关信息:
· 北大青鸟.net

北京北方华腾技术培训中心 版权所有 北大青鸟华腾计算机培训学校
地址:北京市朝阳区来广营诚盈中心6号楼3层 招生热线:010-82011433/32 京ICP备05043413号 京公网安备 11010802023056号
咨询热线:4000-777-016
校区地址:北京市朝阳区来广营诚盈中心6号楼3层
咨询热线:4000-777-016
校区地址:北京市朝阳区来广营西路1号--北大青鸟来广营校区
网站地图 鸿运游戏国际城直营网 悦凯游戏官网直营网 如意游戏代理直营网
申博平台 菲律宾申博太阳城138 申博太阳城最新网址 菲律宾申博太阳城登入
澳门葡京集团登陆线路 云顶国际平台 DS太阳城 永乐彩票北京快乐8
如意游戏平台登录直营网 美梅直营网 如意游戏平台登录直营网 美梅直营网
鸿运国际备用直营网 如意游戏官网直营网 酷彩游戏注册直营网 悦凯游戏招聘直营网
88sbsg.com 188TGP.COM 1112127.COM XSB591.COM 987jbs.com
675SUN.COM DC857.COM 788cw.com XSB593.COM 800xsb.com
XSB577.COM 191tt.com S6181.COM 131PT.COM 987DC.COM
983XTD.COM 616jbs.com 888sbsg.com 885jbs.com 578XTD.COM