正則第一天

2021-09-07 21:18:22 字數 2512 閱讀 5137

關於net正則總是看了又忘,忘了又看,一串複雜的東西自己也沒看懂,沒關係,今天再來開始,一點一點來,不斷去做學習

名 字空間簡介

在名字空間中僅僅包含著6個類和乙個定義,它們是: 

capture: 包含一次匹配的結果; 

capturecollection: capture的序列; 

group: 一次組記錄的結果,由capture繼承而來; 

match: 一次表示式的匹配結果,由group繼承而來; 

matchcollection: match的乙個序列; 

matchevaluator: 執行替換操作時使用的**; 

regex: 編譯後的表示式的例項。

regex類中還包含一些靜態的方法:

escape: 對字串中的regex中的轉義符進行轉義; 

ismatch: 如果表示式在字串中匹配,該方法返回乙個布林值;

match: 返回match的例項; 

matches: 返回一系列的match的方法;

replace: 用替換字串替換匹配的表示式; 

split: 返回一系列由表示式決定的字串; 

unescape:不對字串中的轉義字元轉義。 

簡單匹配

我們首先從使用regex、match類的簡單表示式開始學習。

match m = regex.match("abracadabra", "(a|b|r)+");

我們現在有了乙個可以用 於測試的match類的例項,例如:if (m.success)...

如果想使用匹配的字串,可以把它轉換成乙個字串: 

console.writeline("match="+m.tostring());

這 個例子可以得到如下的輸出: match=abra。這就是匹配的字串了。 

private

void button1_click(object

sender, eventargs e)

}

解釋一下每個符號的意思

x|y匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。

( )標記乙個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用 \( 和 \)。

*匹配前面的子表示式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於。

+匹配前面的子表示式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 。

?匹配前面的子表示式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 。

n 是乙個非負整數。匹配確定的 n 次。例如,'o' 不能匹配 "bob" 中的 'o',但是能匹配 "food" 中的兩個 o。

n 是乙個非負整數。至少匹配n 次。例如,'o' 不能匹配 "bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o' 等價於 'o+'。'o' 則等價於 'o*'。

m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o" 將匹配 "fooooood" 中的前三個 o。'o' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。

字串的替換

簡單字串的替換非常直觀。例如下面的語句:

string s = regex.replace("abracadabra", "abra", "zzzz");

現在我們來看乙個比較複雜的字串替換的例子:

string s = regex.replace(" abra ", @"^\s*(.*?)\s*$", "$1");

這個語句返 回字串abra,其前導和字尾的空格都去掉了。

$匹配輸入字串的結尾位置。如果設定了 regexp 物件的 multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字元本身,請使用 \$

^匹配輸入字串的開始位置,除非在方括號表示式中使用,此時它表示不接受該字元集合。要匹配 ^ 字元本身,請使用 \^。

\s匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。

\s匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。

.匹配除換行符 \n之外的任何單字元。要匹配 .,請使用 \。

$匹配輸入字串的結尾位置。如果設定了 regexp 物件的 multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字元本身,請使用 \$。

另外值得一提的是$1在字串替換方面的使用,它表明替換字串只能包含被替換的字串。

面的模式對於刪除任意字串中的前導和後續空格都非常有用

另外值得一提的是$1在字串替換方面的使用,它表明替換字串只能包含被替換的字串。這句話是啥意思我也沒理解,希望有人看到能告訴我一下

mysql 第一天 MySQL 系列第一天

mysql 系列第一天這篇文章是黑馬程式設計師 mysql 教程的筆記,好好學習哦。和 mysql 資料庫的互動 客戶端單向連線認證 連線伺服器,認證身份。mysql 資料庫屬於 c s 架構,所以開啟伺服器程式後,需要通過客戶端連線它。mysql 會自帶乙個客戶端程式,可以直接輸入賬號和密碼即可連...

上班第一天

上班第一天啊,沒有去上班。早上起的很早,快走的時候突然很不想去。最後決定不去了。早上肯定也沒有什麼事情,無非就是開會,改革之類的話,這種話年年都說,年年都是老樣子。小寶說今天他訂婚,早上還去上班,誰知道是真是假呢。今天是正月初八,30年前我爸和我媽結婚了。現在過年只剩下最重要的一件事情,陪爸媽坐坐,...

開學第一天

今天開學的第一天,心裡些許興奮,畢竟我的第一步還是邁出了。上午大家都進行了簡短的自我介紹,從中了解的其他人的一些故事。每乙個來黑馬的學員背後都有這樣或者那樣的故事。倒是很欽佩其中的一位大姐,她頗具傳奇色彩。而且現在是一位兩歲孩子的母親,她現在所有的壓力或許比我們在座的任何一位學員壓力都要大的多。從她...