regular expressions(正規表示式,以下用re稱呼)對小弟來說一直都是神密的地帶,看到一些網路上的大大,簡單用re就決解了某些文字的問題,小弟便興起了學一學re的想法,但小弟天生就比較懶一些,總希望看有沒有些快速學習的方式,於是小弟又請出google大神,借由祂的神力,小弟在網路上找到了jim hollenhorst先生的文章,經過了閱讀,小弟覺得真是不錯,所以就做個小心得報告,跟move-to.net的朋友分享,希望能為各位大大帶來一丁點在學習re時的幫助。jim hollenhorst大大文章之**如下,有需要的大大可直接鏈結。
the 30 minute regex tutorial by jim hollenhorst
什麼是re?
想必各位大大在做檔案查詢的時侯都有使用過萬用字元」*」,比如說想查詢在windows目錄下所有的word檔案時,你可能就會用」*.doc」這樣的方式來做查詢,因為」*」所代表的是任意的字元。re所做的就是類似這樣的功能,但其功能更為強大。
寫程式時,常需要比對字串是否符合特定樣式,re最主要的功能就是來描述這特定的樣式,因此可以將re視為特定樣式的描述式,舉個例子來說,」\w+」所代表的就是任何字母與數字所組成的非空字串(non-null string)。在.net framework中提供了非常強大的類別庫,藉此可以很輕易的使用re來做文字的查詢與取代、對複雜標頭的解碼及驗證文字等工作。
接下來,就讓我們來體驗一些例子吧。
一些簡單的例子
1. elvis (查詢elvis)
上述代表所要查詢的字元順序為elvis。在.net中可以設定乎略字元的大小寫,所以」elvis」、」elvis」或者是」elvis」都是符合1所下的re。但因為這只管字元出現的順序為elvis,所以pelvis也是符合1所下的re。可以用2的re來改進。
2. \belvis\b (將elvis視為一整體的字查詢,如elvis、elvis乎略字元大小寫時)
「\b」在re中有特別的意思,在上述的例子中所指的就是字的邊界,所以\belvis\b用\b把elvis的前後邊界界定出來,也就是要elvis這個字。
假設要將同一行裡elvis後接有alive的文字串找出來,此時就會用到另外二個特別意義的字元」.」及」*」。」.」所代表就是除了換行字元的任意字元,而」*」所代表的是重複*之前專案直到找到符合re的字串。所以」.*」所指的就是除了換行字元外的任意數目的字元數。所以查詢同一行裡elvis後接有alive的文字串找出來,則可下如3之re。
3. \belvis\b.*\balive\b (查詢elvis後面接有alive的文字串,如elvis is alive)
用簡單之特別字元就可以組成功能強大的re,但也發現當使用越來越多的特別字元時,re就會越來越難看得懂了。
(轉貼 正規表示式學習心得體會 1
貼 正規表示式學習心得體會 1 什麼是re?想必各位大大在做檔案查詢的時侯都有使用過萬用字元 比如說想查詢在windows目錄下所有的word檔案時,你可能就會用 doc 這樣的方式來做查詢,因為 所代表的是任意的字元。re所做的就是類似這樣的功能,但其功能更為強大。寫程式時,常需要比對字串是否符合...
(轉貼 正規表示式學習心得體會 4
貼 正規表示式學習心得體會 4 21.b w b s k b 使用自行命名群組抓取重複字 使用括號還有許多特別的語法元素,比較通用的列表如下 抓取 captures exp 符合exp並抓取它進自動命名的群組 exp 符合exp並抓取它進命名的群組name exp 符合exp,不抓取它 lookar...
學習心得體會1
首先我定義了乙個類 sealed class usermodel set public string username set public usermodel string name,int32 age public void displaymember userage this.username...