久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

全面剖析C#正則表達(dá)式

 duduwolf 2005-09-10

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

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

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

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

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

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

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

        Split方法是把由正則表達(dá)式匹配項(xiàng)定義的位置將輸入字符串拆分為一個子字符串?dāng)?shù)組,。例如:
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>");
}

執(zhí)行的結(jié)果是:
First
Second
Third

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

        Match方法是在輸入字符串中搜索正則表達(dá)式的匹配項(xiàng),并Regex 類的 Match 方法返回 Match 對象,,Match 類表示正則表達(dá)式匹配操作的結(jié)果,。下面的例子演示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();
}

該事例運(yùn)行結(jié)果是:
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 類表示成功的非重疊匹配的只讀的集合,,MatchCollection 的實(shí)例是由 Regex.Matches 屬性返回的,,下面的實(shí)例說明了通過在輸入字符串中找到所有與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í)例運(yùn)行的結(jié)果是:
match POS:0
match POS:20

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多