會員登入 新朋友?立刻註冊
[說明]
文章會慢慢移新精讚 //n.sfs.tw
2019/2/23 星期六     [文章分類及列表]
精讚Blog logo 部落格是自己寫爽的
精讚部落 > 後端程設 > C# 寫法
C# 正規表示式 無次要群組 列印 推薦
作者或來源 瘦河馬 2010-03-16 13:13:00
關鍵字 1正規表達式 2regex 3c#
此文完整連結 http://n.zipko.info/413.html
文章歡迎轉載,請尊重版權註明連結來源。

C# 正規表示式regex和其他語言不太一樣,以下是我寫過的寫法:

using System.Text.RegularExpressions;

// 要比對的字串,字串前面的@代表字串中的 '\' 非脫逸字元
string STR= @"<E_Get_Dir>C:\ LISLIST C:\Windows</E_Get_Dir>";

// 先定義 一個 Regex類,主要是表示式Pattern和規則選項
// 黃色底部分是TAG,一個TAG代表比對成功後的標記,以供比對成功可以取出,他的語法是(?<TAGNAME>比對的pattern);如果不用TAG的話,M.Groups就用索引 0,1,2,.... 例M.Groups[1]表示第2個括孤的比對結果;水藍色底的?表示不貪多比對,否則會一直比對到底。
// 這裡的pattern 主要是分析出 <tag>content</tag> 標籤和內容

string pattern="<(?<TAG> [a-zA-Z_]+)>(?<CT> .*?)<(?<ETAG> /[a-zA-Z_]+)>";
System.Text.RegularExpressions.Regex Re = new System.Text.RegularExpressions.Regex(pattern, RegexOptions.None);

// RegexOptions.Multiline 多行模式,變更 ^ 和 $ 的意義以致它們分別在任何一行的開頭和結尾做比對,而不只是整個字串的開頭和結尾。
// RegexOptions.Singleline 指定單行模式,變更點 (.) 的意義以至於它符合一切字元 (而不是 \n 之外的一切字元)。  意思就 是 \n不再當成是斷行字元。

// 單筆比對,宣告一個Match
Match M = Re.Match(STR);

if (M.Success)
{
    string tag = M.Groups["TAG"].Value;
    string ct = M.Groups["CT"].Value;
    string etag = M.Groups["ETAG"].Value;
   // 顯示 this.textBox2.AppendText(tag+ "-->" + ct + "<---"+etag +"\n");
}

// 事實上要一次全部分析,定義MatchCollection類可得全部結果,可以參考這篇


MatchCollection MC= Re.Matches(STR);
foreach (Match m in MC) {
    .....
}

 

END
F B 留 言 版

留言結束請重新整理網頁顯示留言
相 關 文 章
同 群 組 其 他 文 章
隨 機 文 章
精讚部落版權所有(c) JinZan Blog http://n.zipko.info Author axer@tc.edu.tw. 最佳瀏器為Firefox,本網頁不支援IE6。[文章分類及列表]
本站最佳瀏覽解析度1024x768 網站建置 2009.11