欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
全面剖析C#正則表達式

        到目前為止,許多的編程語(yǔ)言和工具都包含對正則表達式的支持,當然.NET也不例外,.NET基礎類(lèi)庫中包含有一個(gè)名稱(chēng)空間和一系列可以充分發(fā)揮規則表達式威力的類(lèi)。 
        正則表達式的知識可能是不少編程人員最煩惱的事兒了。如果你還沒(méi)有規則表達式方面的知識的話(huà),建議從正則表達式的基礎知識入手。前參見(jiàn) 正則表達式語(yǔ)法。 

        下面就來(lái)研究C#中的正則表達式,C#中的正則表達式包含在.NET基礎雷庫的一個(gè)名稱(chēng)空間下,這個(gè)名稱(chēng)空間就是System.Text.RegularExpressions。該名稱(chēng)空間包括8個(gè)類(lèi),1個(gè)枚舉,1個(gè)委托。他們分別是:
                     Capture: 包含一次匹配的結果; 
                     CaptureCollection: Capture的序列; 
                     Group: 一次組記錄的結果,由Capture繼承而來(lái); 
                     GroupCollection:表示捕獲組的集合
                     Match: 一次表達式的匹配結果,由Group繼承而來(lái); 
                     MatchCollection: Match的一個(gè)序列; 
                     MatchEvaluator: 執行替換操作時(shí)使用的委托; 
                     Regex:編譯后的表達式的實(shí)例。 
                     RegexCompilationInfo:提供編譯器用于將正則表達式編譯為獨立程序集的信息
                     RegexOptions 提供用于設置正則表達式的枚舉值
Regex類(lèi)中還包含一些靜態(tài)的方法: 
                    Escape: 對字符串中的regex中的轉義符進(jìn)行轉義; 
                    IsMatch: 如果表達式在字符串中匹配,該方法返回一個(gè)布爾值; 
                    Match: 返回Match的實(shí)例; 
                    Matches: 返回一系列的Match的方法; 
                    Replace: 用替換字符串替換匹配的表達式; 
                    Split: 返回一系列由表達式?jīng)Q定的字符串; 
                    Unescape:不對字符串中的轉義字符轉義。

下面介紹他們的用途:
        先看一個(gè)簡(jiǎn)單的匹配例子,我們首先從使用Regex、Match類(lèi)的簡(jiǎn)單表達式開(kāi)始學(xué)習?!atch m = Regex.Match("abracadabra", "(a|b|r)+"); 我們現在有了一個(gè)可以用于測試的Match類(lèi)的實(shí)例,例如:if (m.Success){},如果想使用匹配的字符串,可以把它轉換成一個(gè)字符串:   MesaageBox.Show("Match="+m.ToString()); 這個(gè)例子可以得到如下的輸出: Match=abra。這就是匹配的字符串了。

        Regex 類(lèi)表示只讀正則表達式類(lèi)。它還包含各種靜態(tài)方法(在下面的實(shí)例中將逐一介紹),允許在不顯式創(chuàng )建其他類(lèi)的實(shí)例的情況下使用其他正則表達式類(lèi)。

        以下代碼示例創(chuàng )建了 Regex 類(lèi)的實(shí)例并在初始化對象時(shí)定義一個(gè)簡(jiǎn)單的正則表達式。聲明一個(gè)Regex對象變量:Regex objAlphaPatt;,接著(zhù)創(chuàng )建Regex對象的一個(gè)實(shí)例,并定義其規則:objAlphaPatt=new Regex("[^a-zA-Z]");

        IsMatch方法指示 Regex 構造函數中指定的正則表達式在輸入字符串中是否找到匹配項。這是我們使用C#正則表達式時(shí)最常用的方法之一。下面的例子說(shuō)明了IsMatch方法的使用:
if( !objAlphaPatt.IsMatch("testisMatchMethod"))
 lblMsg.Text = "匹配成功";
else
 lblMsg.Text = "匹配不成功";
這段代碼執行的結果是“匹配成功”
if( ! objAlphaPatt.IsMatch("testisMatchMethod7654298"))
 lblMsg.Text = "匹配成功";
else
 lblMsg.Text = "匹配不成功";
這段代碼執行的結果是“匹配不成功”

         Escape方法表示把轉義字符作為字符本身使用,而不再具有轉義作用,最小的元字符集(\、*、+、?、|、{、[、(、)、^、$、.、# 和空白)。Replace方法則是用指定的替換字符串替換由正則表達式定義的字符模式的所有匹配項??聪旅娴睦?,還是使用上面定義的Regex對象:objAlphaPatt.Replace("this [test] ** replace and escape" ,Regex.Escape("()"));他的返回結果是:this\(\)\(\)test\(\)\(\)\(\)\(\)\(\)replace\(\)and\(\)escape,如果不是Escape的話(huà),則返回結果是:this()()test()()()()()replace()and()escape,Unescape 反轉由 Escape 執行的轉換,但是,Escape 無(wú)法完全反轉 Unescape。

        Split方法是把由正則表達式匹配項定義的位置將輸入字符串拆分為一個(gè)子字符串數組。例如:
Regex r = new Regex("-"); // Split on hyphens.
string[] s = r.Split("first-second-third");
for(int i=0;i<s.Length;i++)
{
 Response.Write(s[i]+"<br>");
}

執行的結果是:
First
Second
Third

        看上去和String的Split方法一樣,但string的Split方法在由正則表達式而不是一組字符確定的分隔符處拆分字符串。

        Match方法是在輸入字符串中搜索正則表達式的匹配項,并Regex 類(lèi)的 Match 方法返回 Match 對象,Match 類(lèi)表示正則表達式匹配操作的結果。下面的例子演示Match方法的使用,并利用Match對象的Group屬性返回Group對象:

string text = @"public string testMatchObj string s string  match ";
string pat = @"(\w+)\s+(string)";
// Compile the regular expression.
Regex r = new Regex(pat, RegexOptions.IgnoreCase);
// Match the regular expression pattern against a text string.
Match m = r.Match(text);
int matchCount = 0;
while (m.Success)
{
 Response.Write("Match"+ (++matchCount) + "<br>");
 for (int i = 1; i <= 2; i++)
 {
  Group g = m.Groups[i];
  Response.Write("Group"+i+"=‘" + g + "‘"  + "<br>");
  CaptureCollection cc = g.Captures;
  for (int j = 0; j < cc.Count; j++)
  {
   Capture c = cc[j];
   Response.Write("Capture"+j+"=‘" + c + "‘, Position="+c.Index + "<br>");
  }
 }
 m = m.NextMatch();
}

該事例運行結果是:
Match1
Group1=‘public‘
Capture0=‘public‘, Position=0
Group2=‘string‘
Capture0=‘string‘, Position=7
Match2
Group1=‘testMatchObj‘
Capture0=‘testMatchObj‘, Position=14
Group2=‘string‘
Capture0=‘string‘, Position=27
Match3
Group1=‘s‘
Capture0=‘s‘, Position=34
Group2=‘string‘
Capture0=‘string‘, Position=36

        MatchCollection 類(lèi)表示成功的非重疊匹配的只讀的集合,MatchCollection 的實(shí)例是由 Regex.Matches 屬性返回的,下面的實(shí)例說(shuō)明了通過(guò)在輸入字符串中找到所有與Regex中指定的匹配并填充 MatchCollection。

MatchCollection mc;
Regex r = new Regex("match");
mc = r.Matches("matchcollectionregexmatchs");
for (int i = 0; i < mc.Count; i++)
{
 Response.Write( mc[i].Value + " POS:" + mc[i].Index.ToString() + "<br>");
}
該實(shí)例運行的結果是:
match POS:0
match POS:20

        正則表達式對初學(xué)者來(lái)說(shuō),往往是一種神秘的東西,實(shí)際上,仔細研究一下也就是那么回事兒,沒(méi)有多么的難。希望這篇文章對你有所幫助。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C#中正則表達式的使用
解讀 C# 中的正則表達式
C#利用正則表達式實(shí)現字符串搜索
C#正則表達式整理
.NET正則表達式使用高級技巧之替換類(lèi)
【C#】正則進(jìn)階
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久