溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C#和.NET框架正則表達(dá)式怎么理解

發(fā)布時(shí)間:2021-12-02 11:17:54 來源:億速云 閱讀:121 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“C#和.NET框架正則表達(dá)式怎么理解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C#和.NET框架正則表達(dá)式怎么理解”吧!

C#和.NET框架正則表達(dá)式

正則表達(dá)式的一種最常用的場所是用于使用一些預(yù)先定義的格式(例如,強(qiáng)制建立的規(guī)則用于確保口令中包含特定的使其很難被拆斷的字符)校驗(yàn)用戶輸入。這些規(guī)則被典型地定義為正則表達(dá)式。正則表達(dá)式也常用于校驗(yàn)簡單的輸入,例如電子郵件地址和電話號(hào)碼。

C#和.NET框架提供的操作正則表達(dá)式的一個(gè)關(guān)鍵類是RegEx類。這個(gè)類提供一個(gè)靜態(tài)的方法IsMatch,它返回一個(gè)布爾值指示是否指定的輸入字符串匹配一個(gè)給定的正則表達(dá)式。

在下列代碼中,使用一個(gè)普通正則表達(dá)式來測試電子郵件地址的有效性:

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

如果你搞不清楚這個(gè)正則表達(dá)式,別擔(dān)心。電子郵件模式的基本思想是,它需要一些數(shù)字字母字符,后面跟著一個(gè)@符號(hào),然后是一些字符組合,再后面跟著一個(gè)".",再往后至少跟著兩個(gè)字符。你可以以不同的輸入試驗(yàn)前面的代碼來看一下你得到什么結(jié)果。即使你不理解該正則表達(dá)式本身,只要知道它們的存在,那么你就可以把它使用于你的應(yīng)用程序中來校驗(yàn)輸入。

正則表達(dá)式的其它常見的用法是,根據(jù)表達(dá)式分析文本以及使用之來從用戶輸入中提取數(shù)據(jù)(稱作組匹配)。

正則表達(dá)式中包括一個(gè)特征叫組。一個(gè)組允許你把一個(gè)命名標(biāo)識(shí)放到該正則表達(dá)式的一個(gè)特定節(jié)中。當(dāng)你調(diào)用Match()來針對模式比較輸入數(shù)據(jù)時(shí),其結(jié)果實(shí)際上把匹配分成一些組,允許你提取匹配每一個(gè)組的輸入的部分。

例如,在前面的例子中,我們創(chuàng)建了一個(gè)username,它允許我們提取在一個(gè)電子郵件地址中位于@符號(hào)前的所有數(shù)據(jù)。然后,當(dāng)執(zhí)行一個(gè)匹配時(shí),我們能夠使用正則表達(dá)式的命名組從輸入中提取該username。

下列代碼顯示怎樣從一個(gè)用戶在控制臺(tái)輸入的URL中提取協(xié)議名字和端口號(hào)。正則表達(dá)式的偉大在于,它們使用自己的語言;因此,它們不必依賴于C、C++、C#、VB.NET或任何其它語言。在下列代碼中的正則表達(dá)式來自于一個(gè)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);

當(dāng)你使用不帶有一個(gè)端口號(hào)的URL運(yùn)行前面的代碼時(shí),你會(huì)注意到,你沒有得到任何組值。這是因?yàn)?,該輸入根本不匹配正則表達(dá)式。當(dāng)不存在匹配時(shí),你顯然無法從給定的組中提取有意義的數(shù)據(jù)。當(dāng)你使用匹配該正則表達(dá)式的端口號(hào)的URL運(yùn)行前面的代碼時(shí),你將得到如下列文本所示的輸出結(jié)果:

Entera URL for data parsing: http://server.com:2100/home.aspx  The Protocol you entered was http  The Port Number you entered was :2100

到此,相信大家對“C#和.NET框架正則表達(dá)式怎么理解”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI