英文regular expression,是電腦科學的乙個重要概念,她使用一種數學演算法來解決電腦程式中的文字檢索,匹配等問題,正規表示式語言是一種專門用於字串處理的語言。在很多語言中都提供了對它的支援,c#也不例外
兩個功能:
檢索:從字串中獲取想要的部分
匹配:判斷字串是否符合正規表示式的的過濾邏輯
常用的用法:可以判斷使用者輸入的密碼或郵箱格式是否合法等
正規表示式就是有普通字元以及特殊字元組成 的文字模式。特殊字元即是元字元
\ 轉義字元,如果要表示\ 則用\\
@符號,在正規表示式前面新增@字元,這樣表示不讓編譯器去解析其中的轉義字元,而作為正規表示式的語法存在
^ 匹配字串的開始位置
$ 匹配字串的結束位置
\b 匹配乙個單詞的邊界
\b 匹配非單詞邊界
例子:匹配開始和結束
string str = "world";
//匹配開始的位置,替換成指定字串
string res = regex.replace(str, "^", "hello ");//輸出hello world
//匹配結束的位置,替換成指定字串
string res2 = regex.replace(str, "$", "!");//輸出world!
. 匹配除換行符以外的任意字元
\w 匹配字母、數字、下劃線、漢字 (指大小寫字母、0-9的數字、下劃線_)
\w \w的補集 ( 除「大小寫字母、0-9的數字、下劃線_」之外)
\s 匹配任意空白符 (包括換行符/n、回車符/r、製表符/t、垂直製表符/v、換頁符/f)
\s \s的補集 (除\s定義的字元之外)
\d 匹配數字 (0-9數字)
\d 表示\d的補集 (除0-9數字之外)
例子:只允許輸入數字
regex.ismatch(input, @"^\d*$");
[abc] 表示匹配a,或匹配b,或匹配c
[a-c] 表示匹配a到c之間的字元
[^x] 表示匹配除了x以外的字元
例子:代替除了ace之外的任意字元為*
string str = "abcdef";
string pattern = @"[^ace]";//代表乙個字元,除了ace之外的任意字元
string res = regex.replace(str, pattern, "*");//代替除了ace之外的任意字元為*
//結果為 a*c*e*
* 表示出現0個或多次
+ 表示出現1次或多次
? 表示
出現0次或1次
表示出現n次,
n表示乙個非負整數
表示至少出現n次
表示出現n次到m次
例子:驗證輸入的是否為合法的qq號(備註:qq號為5-12位數字)
string qq1 = "123", qq2 = "397458006",qq3="abc123456";
string pattern = @"^\d$";
bool ismatch1 = regex.ismatch(qq1, pattern);//false
bool ismatch2 = regex.ismatch(qq2, pattern);//true
bool ismatch3 = regex.ismatch(qq3, pattern);//false
| 字元,
將兩個匹配條件進行邏輯或運算
例子:查詢數字或字母
string str = "123哈哈abc啊啊";
string pattern = @"\d|[a-z]";
matchcollection col = regex.matches(str, pattern);
foreach (match match in col)
結果為
使用小括號()
例子:單個字元重複兩次替換為**
string str = "aabbaaacccaaaa";
string pattern = @"a";
string res = regex.replace(str, pattern, "**");
//結果為 **bb**accc****
string pattern = @"^(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.)(2[0-4]\d|25[0-5]|[01]?\d\d?))$";
學習正規表示式
常用正規表示式
正規表示式初學筆記
grep 查詢 將關鍵字顏色為紅色 alias grep grep color auto 表示以什麼什麼開頭 表示以什麼為結尾 a z 表示a z的任意字元 a z 表示非以a z開頭的任意字元 表示任意乙個字元 表示0個或者任意個它前面的字元 表示0個或1個與.有些相似 表示一次或多個與 有些相似...
正規表示式初學筆記
grep 查詢 將關鍵字顏色為紅色 alias grep grep color auto 表示以什麼什麼開頭 表示以什麼為結尾 a z 表示a z的任意字元 a z 表示非以a z開頭的任意字元 表示任意乙個字元 表示0個或者任意個它前面的字元 表示0個或1個與.有些相似 表示一次或多個與 有些相似...
正規表示式初學
今天第一次真正好好學了下這個正規表示式,還是看的鳥哥私房菜,感覺收穫很大啊,閒話不多說了。下面是re字元的使用 word 待搜尋的字元word在字串首行 範例 搜尋首行為 開始的那一行,並列出行號 grep n a.txt word 待 搜尋的字元word在字串行尾 範例 將行尾為!的那一行列印出來...