>> 欄目列表
  >>  北大青鳥類
  >>  課程方向類
  >>  學時學費類
  >>  軟件技術類
  >>  網絡技術類
  >>  學習類
  >>  就業類
  >>  緊缺崗位類

北大青鳥高考招生簡章 網絡工程師課程 大數據開發 軟件工程師課程 安卓課程 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://server.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號--北大青鳥來廣營校區
黑龙江十一选五开奖软件 有青海快3的台子 湖北快3走势图基本图 三分彩是全国开奖吗 篮球比分118直播 佳永配资配资知识中心 天成配资 黑龙江p62开奖号码今天 股票大智慧官方下载 陕西11选5前三4码遗漏 股权基金配资