首先說幾個重要的Regex類:
Regex
Regex 類表示不可變(唯讀)的Regex。它還包含各種靜態方法,允許在不顯式建立其他類的執行個體的情況下使用其他Regex類。
下面的程式碼範例建立了 Regex 類的執行個體並在初始化對象時定義一個簡單的Regex。請注意,使用了附加的反斜線作為逸出字元,它將 \. 匹配字元類中的反斜線指定為原義字元。
樣本1:Regex r=new Regex("^.+\w@.+\w\.\w+$"); //^.+\w@.+\w\.\w+$ 匹配E_Mail地址
Regex 類的常用方法:
Regex.Match
在指定的輸入字串中搜尋 Regex 建構函式中指定的Regex的第一個匹配項。
Regex.Matches
在指定的輸入字串中搜尋指定的Regex的所有匹配項。
Match
Match
類表示單個Regex匹配操作的結果。
Match 類的執行個體由 Regex.Match 方法返回,並表示字串中的第一個模式比對項。 後續匹配項由 Match.NextMatch
方法返回的 Match 對象表示。 此外,由零個、一個或多個 Match 對象組成的 MatchCollection 對象由 Regex.Matches
方法返回。
MatchCollection
MatchCollection
類表示成功的非重疊匹配項的序列。該集合為不可變(唯讀)的,並且沒有公用建構函式。MatchCollection 的執行個體是由
Regex.Matches 方法返回的。
如果 Regex.Matches 方法無法與輸入字串中的Regex模式比對,它將返回一個空的 MatchCollection 對象。 然後,可以使用
C# 中的 foreach 構造或 Visual Basic 中的 For Each 構造來逐一查看集合。
以下代碼從指定文本中提取指定內容(提取百家姓練習題):
1 string files = File.ReadAllText(@"F:\bjx.txt", Encoding.Default); 2 3 4 5 string reg = @"〔\w{1}〕"; 6 MatchCollection mat = Regex.Matches(files, reg);//通過Regex提取 7 8 9 10 List<string> aa = new List<string>(); //泛型運用11 12 //foreach 遍曆13 foreach (Match m in mat) //Match類表示單個Regex匹配操作的結果14 {15 16 17 aa.Add(m.Value); //把尋找的結果儲存到泛型變數中18 }19 20 21 for (int i = 0; i < aa.Count; i++)22 {23 Console.WriteLine(aa[i]); //輸出到螢幕24 }25 26 Console.ReadKey();
補充一點知識,只匹配漢字:
[\u2E80-\u9FFF]+
匹配所有東亞區的語言
[\u4E00-\u9FFF]+
匹配簡體和繁體
[\u4E00-\u9FA5]+
匹配簡體
例:[\u2E80-\u9FFF|,] 包含標點“,”的漢欄位。
已測試。