正則表達式可以被看成是一個強大的通配符(通用匹配符號)。大多數(shù)人都應該很熟悉通配符,例如,當我們看到一個諸如“SAMS”的表達式,那么一個文本串中任何以SAMS開頭的字符串都可以與這個表達式匹配。正則表達式提供 " /> 嫩草国产精品99国产精品,中文字幕亚洲无线码高清不卡,adc网址在线观看

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

C#使用正則表達式實例

 

  正則表達式可以被看成是一個強大的通配符(通用匹配符號)。大多數(shù)人都應該很熟悉通配符,例如,當我們看到一個諸如“SAMS”的表達式,那么一個文本串中任何以SAMS開頭的字符串都可以與這個表達式匹配。正則表達式提供了比這種通配符能力更強、控制規(guī)則更復雜、功能更完善的匹配機制。

  本文將對.NET框架提供的支持正則表達式的類做一個概要介紹。要想獲得有關正則表達式的更多知識,可參考《Regular Expression Pocket Reference 》(O'Reilly Media出版社,ISBN:059600415X)或《Mastering Regular Expressions》,2nd Edition (O'Reilly Media出版社,ISBN:0596002890)等書籍。它們可以教會你如何創(chuàng)建正則表達式,并提供了最常用的正則表達式列表。

  輸入確認

  正則表達式最重要的用途之一,是確認某個輸入的文本是否符合一個預定義的格式。例如,一個能夠作為密碼的字符串通常要遵循某些強制的規(guī)則,以使得密碼字符串難以被破解。這些規(guī)則常常被定義為正則表達式。正則表達式也常常用來對一些簡單的輸入執(zhí)行確認,如確認email地址和電話號碼。

  RegEx類是.NET框架中一個處理正則表達式的關鍵類。RegEx類包含了一個名為IsMatch的靜態(tài)方法,它返回一個布爾值,這個布爾值說明指定的輸入串是否與一個給定的正則表達式匹配。

  下面的代碼中,用到了一個常用的正則表達式,用來測試一個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})(/]?)$";

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."); 

  不要擔心上面的正則表達式是否有意義。電子郵件模式背后隱藏的基本思想是,它必須包含一些字符,然后是一個@標記,接著是跟在“.”之后的一些字符組合,“.”之后至少要有兩個字符。你可以試著在上面的程序段中使用不同的文本作為輸入,并觀察程序執(zhí)行的結果。即使你不理解正則表達式本身的含義,也沒有關系。只要知道存在正則表達式這樣一種工具,并且它可以用來對輸入進行確認,這對于你編寫應用程序將是極有幫助的。

  從輸入中抽取數(shù)據(jù)

  正則表達式另一個常見用途是用來分析文本,并從用戶的輸入中抽取數(shù)據(jù)(稱為組匹配)。

  C#中的正則表達式包含了一個稱為組(group)的獨特特征。使用組,可以為正則表達式中特定的段賦予一個標識符名稱。當調(diào)用match() 方法對模式和輸入數(shù)據(jù)進行比較時,比較的結果實際上是按照組拆分被匹配的符號串,這樣就允許你從輸入中抽取與每個組相匹配的部分。

  例如,我們可以在前一個例子中創(chuàng)建一個名為username的組,用它從一個email地址中提取所有位于@之前的符號串。這樣,在執(zhí)行匹配時,就可以應用正則表達式中的命名組來抽取用戶名信息。

  看看下面的代碼示例,它說明如何從用戶在控制臺輸出的URL地址中同時抽取協(xié)議名和端口號。正則表達式的一個良好特性是它自身構成了一個語言,這個語言與C、C++、C#或任何其他編程語言沒有依賴關系。這使得我們可以容易地從互聯(lián)網(wǎng)或參考文獻的應用案例中借用某些常用的正則表達式。例如,下面例程中的正則表達式借用自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,你將會注意到程序不輸入任何組的匹配值。這是因為輸入的文本與正則表達式根本不匹配。當輸入與正則表達式不匹配時,顯然就不能夠利用任何命名的組來抽取有意義的數(shù)據(jù)。如果為上面的例程輸入一個帶端口號并且與正則表達式匹配的URL,程序產(chǎn)生的輸出將如下所示:

Enter a URL for data parsing: http://server.com:2100/home.ASPx
The Protocol you entered was http
The Port Number you entered was :2100

AspNet技術C#使用正則表達式實例,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 无限资源好看片2019免费观看 | 色在线视频亚洲欧美 | 沦为公交两奶头春药高潮迭起 | 1000部做羞羞事禁片免费视频网站 | 久久精品午夜一区二区福利 | 日本一卡二卡三卡四卡无卡免费播放 | 牛牛超碰 国产 | 挠黑色超薄丝袜脚心vk40分钟 | WWW国产精品人妻一二三区 | 色久久久综合88一本道 | 日本十八禁无遮无挡漫画 | 999久久狠狠免费精品 | 国产传媒在线观看 | 18女下面流水不遮网站免费 | 欧美91精品久久久久网免费 | JIZJIZJIZ 日本老师水多 | 国产传媒在线观看 | 国产日韩精品一区二区三区在线 | 69丰满少妇AV无码区 | 欧美 另类 美腿 亚洲 无码 | 亚洲色图另类小说 | hd性欧美俱乐部中文 | 精品淑女少妇AV久久免费 | 亚洲AV成人片色在线观看网站 | 精品网站一区二区三区网站 | 亚洲色视在线观看视频 | 男人j进女人j一进一出 | 久久99热这里只频精品6 | 2021国产精品国产精华 | 久久婷婷五月综合色丁香花 | 性欧美video另类hd高清 | 伊人香蕉在线播放视频免费 | 扒开 浓密 毛 | 荡公乱妇HD中文字幕 | 人人啪日日观看在线 | 日韩免费一区 | 国产人妻午夜无码AV天堂 | 午夜福到在线2019 | 美女裸露胸部100%无遮挡 | 在教室做啊好大用力 | 午夜不卡av免费 |