c#基礎語言編程-正則表達式基礎

引言
正則表達式是一種用高度抽象的字符串來描述字符串特徵,進而實現對字符串的匹配、提取、替換等等。正則表達式(以下簡稱正則,Regex)通常不獨立存在,各種編程語言和工具作爲宿主語言提供對正則的支持,並根據自身語言的特點,進行一定的剪裁或擴展。

元字符
正則表達式是由一種表示特殊含義的元字符和字符組成的。元字符可以是一個字符,如^,也可以是一個字符序列,如“\w”。

  • 1、[]:字符組

可以匹配[ ]中包含的任意一個字符。雖然可以是任意一個,但只能是一個。字符組支持由連字符“-”來表示一個範圍。當“-”前後構成範圍時,要求前面字符的碼位小於後面字符的碼位。
[^…] 排除型字符組。排除型字符組表示任意一個未列出的字符,同樣只能是一個。
例子說明:
表達式 說明
[abc] : 表示“a”或“b”或“c”
[\u4e00-\u9fa5] : 表示任意一個漢字
0-9”在匹配“Windows 2003”時,匹配成功,匹配的結果爲“20”。
“[^inW]”在匹配“Windows 2003”時,匹配成功,匹配的結果爲“d”。

2、字符範圍

一些常用的字符範圍,如數字等,由於非常常用,即使使用0-9這樣的字符組仍顯得麻煩,所以定義了一些元字符,來表示常見的字符範圍。
這裏寫圖片描述

舉例:
“\w\s\d”在匹配“Windows 2003”時,匹配成功,匹配的結果爲“s 2”。
小數點可以匹配除“\n”以外的任意一個字符。如果要匹配包括“\n”在內的所有字符,一般用[\s\S],或者是用“.”加(?s)。

  • 3 其他元字符
    這裏寫圖片描述

“^a”在匹配“cba”時,匹配失敗,因爲表達式要求開始位置後面是字符“a”,而“cba”顯然是不滿足的。
“\d$”在匹配“123”時,匹配成功,匹配結果爲“3”,這個表達式要求匹配結尾處的數字,如果結尾處不是數字,如“123abc”,則是匹配失敗的。

  • 4 轉義字符
    這裏寫圖片描述

  • 5量詞
    這裏寫圖片描述

  • 6 分支結構

當一個字符串的某一子串具有多種可能時,採用分支結構來匹配,“|”表示多個子表達式之間“或”的關係,“|”是以()限定範圍的,如果在“|”的左右兩側沒有()來限定範圍,那麼它的作用範圍即爲“|”左右兩側整體。

  • \b 單詞邊界
    “\b”匹配單詞邊界,不匹配任何字符。
    “\b”匹配的只是一個位置,這個位置的一側是構成單詞的字符,另一側爲非單詞字符、字符串的開始或結束位置。“\b”是零寬度的。 \b表示的是一個斷言,什麼是斷言:只驗證,不匹配。
string msg = "Hi,how 12are12 you?Welcome to our country!";
MatchCollection matches = Regex.Matches(msg, @"\b[a-zA-Z]{3}\b");
foreach (Match item in matches)
{
   Console.WriteLine(item.Value);
}
Console.Read();

分析在不加\b單詞邊界時,會輸出每隔3個字符就輸出,這樣就無法得到字符爲3的字符串了。所以加上單詞邊界斷言後,表示就是找字符爲3個的字符串。

綜述
用正則表達式匹配、提取字符串,要首先進行對字符串的統一特徵進行提取,合理切割字符串整體,保證有效提取字符串。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章