c 正規表示式

2021-08-26 14:57:36 字數 3027 閱讀 9918

正則則表示式表述了乙個字串的書寫規則。

(判斷使用者輸入的密碼是否合法,判斷使用者輸入的郵箱格式是否合法)

1.檢索:通過正規表示式,從字串中獲取我們想要的部分

2.匹配:判斷給定的字串是否符合正規表示式的過濾邏輯

二.正規表示式的組成

正規表示式就是由普通字元及特殊字元(成為元字元)組成的文字模式,該模式表述在查詢文字主體時待匹配的乙個或多個字串

正規表示式中,\是轉義字元、*是元字元(如果要表示乙個\.*字元的話,就需要用\\ \. \*)

三.定位元字元

在字串前加@字元,這樣編譯器就不會去解析其中的轉義字元,作為正規表示式的語法(元字元)存在

字元說明

^匹配 字串的開頭或行的開頭

$匹配必須出現在字串的末尾或行的末尾

\b匹配單詞的開始或結束的位置

\b匹配非單詞的開始或結束的位置

\a指定匹配必須出現在字串的開頭(忽略multiline選項)

\z指定匹配必須出現在字串的結尾(忽略multiline選項)

\z指定匹配必須出現在字串的結尾或字串結尾處的\n之前(忽略multiline選項)

\g指定匹配必須出現在上乙個匹配結束的地方。與match.nextmatch()一起使用時,此斷言確保所有匹配都是連續的。

四.基本語法元字元

字元說明

\d匹配數字(0-9)

\d表示\d的補集

\w匹配字母、數字、下劃線、漢字

\s匹配任意空白字元(/n換行、/r回車符、/t製表符、/v垂直製表符、/f換頁等)

\w\s

五.反義字元

字元說明

\w\w的補集

\s\s的補集

\d\d的補集(出0-9)的數字之外

\b匹配非單詞的開始或結束的位置

[abc]

匹配中括號中的字元

[a-c]

匹配中括號中a-c的字元

[^x]

匹配除了x以為的任意字元

[^adwz]

匹配除了adwz這幾個字元以外的任意字元

string str1 = "holle world";

string pattern = @"[^oel]";

string s=regex.replace(str1, pattern,"*");

console.writeline(s);

console.readkey();

輸出結果:*olle**o*l*

//通過正規表示式regex.splic對字串按符號分割

string str1 = "fagea,feawgrafe;yjsrasfa.reag/grea";

string pattern = @"[,;./]";

string st=regex.split(str1, pattern);

foreach (var variable in st)

console.readkey();

輸出結果:

fagea

feawgrafe

yjsrasfa

reag

grea

六.重複描述字元

字元說明

連續重複匹配n個字元

連續重複匹配n個或多個字元

連續重複匹配n-m個字元

?重複0次或一次

+重複一次或更多次

*重複零次或更多次

//輸入的是否為qq號

string str1 = "510646531";

string str2 = "6042146777894";

string str3 = "1f2344556";

string pattern = @"^\d$";

bool ismatch = regex.ismatch(str1, pattern);

bool ismatch2 = regex.ismatch(str2, pattern);

bool ismatch3 = regex.ismatch(str3, pattern);

console.writeline($",,");

console.readkey();

七.則一匹配符

字元說明

|將連個匹配條件進行邏輯「或」(or)運算

string str1 = "25()dffse的撒熱狗";

string pattern = @"\d|[a-z]";

matchcollection s = regex.matches(str1, pattern);

foreach (match variable in s)

console.readkey();

輸出結果:25

dffs

e

string str1 = "fagea,feawgrafe;yjsrasfa.reag/grea";

//string pattern = @"[,;./]";

string pattern1 = @"[,]|[;]|[.]|[/]";

string st=regex.split(str1, pattern1);

foreach (var variable in st)

console.readkey();

八.對正規表示式進行分組

用小括號指定表示式(也叫做分組)

//檢測ip位址是否合法

string ip = "192.168.123.010";

string patternip = @"^(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.)(2[0-4]\d|25[0-5]|[01]?\d\d?))$";

bool isip=regex.ismatch(ip, patternip);

console.writeline(isip);

console.readkey();

C 正規表示式

c 中的正規表示式 1 c 中的正規表示式 jeffrey e.f.friedl寫了一本關於正規表示式的書 精通正規表示式 作者為了使讀者更好的理解和掌握正規表示式,編造了乙個故事。該書的語言以perl為主。據我所知c 中的正規表示式也是基於perl5。所以它們應該有許多的共同之處。其實,我並不打算...

C 正規表示式

正規表示式 元字元 匹配任何單個字元,匹配括號內的任何乙個字元,改變優先順序,定義提取組,將兩個匹配條件進行邏輯或運算,匹配0至多個它之前的子表示式,和萬用字元 沒關係,匹配前面的子表示式一次或多次,匹配前面的子表示式零次或一次,匹配前面表示式確定的n次,匹配前面表示式至少n次,匹配前面表示式n到m...

C 正規表示式

正規表示式元字元 1 中括號 用來描述匹配規則,乙個中括號只能匹配乙個字元 2 小括號 用來描述匹配的字串,乙個小括號表示匹配一段字串 3 大括號 用來描述匹配的具體數量 4 s 用於匹配單個空格符,包括tab鍵和換行符 5 s 用於匹配除單個空格符之外的所有字元 6 d 用於匹配從0到9的數字 7...