關於正規表示式

2021-04-13 00:18:38 字數 1561 閱讀 5960

前言

regular expressions(正規表示式,以下用re稱呼)對小弟來說一直都是神密的地帶,看到一些網路上的大大,簡單用re就決解了某些文字的問題,小弟便興起了學一學re的想法,但小弟天生就比較懶一些,總希望看有沒有些快速學習的方式,於是小弟又請出google大神,借由祂的神力,小弟在網路上找到了jim hollenhorst先生的文章,經過了閱讀,小弟覺得真是不錯,所以就做個小心得報告,跟move-to.net的朋友分享,希望能為各位大大帶來一丁點在學習re時的幫助。jim hollenhorst大大文章之**如下,有需要的大大可直接鏈結。

。接下來,就讓我們來體驗一些例子吧。

一些簡單的例子

假設要查詢文章中elvis後接有alive的文字串的話,使用re可能會經過下列的過程,括號是所下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就會越來越難看得懂了。

再看看另外的例子

組成有效的**號碼

假使要從網頁上收集顧客格式為***-***x的7位數字的**號碼,其中x是數字,re可能會這樣寫。

4. /b/d/d/d-/d/d/d/d (查詢七位數字之**號碼,如123-1234)

每乙個/d代表乙個數字。」-」則是一般的連字符號,為避免太多重複的/d,re可以改寫成如5的方式。

5. /b/d-/d (查詢七位數字**號碼較好的方法,如123-1234)

在/d後的,代表重複前乙個專案三次,也就是相等於/d/d/d。

re的學習及測試工具 expresso

因為re不易閱讀及使用者容易會下錯re的特性,jim大大開發了乙個工具軟體expresso,用來幫助使用者學習及測試re,除了上面所述的**之外,也可以上ultrapico**(http://www.ultrapico.com)

關於正規表示式

使用atl中的正規表示式總是會多多少少的出問題,比如 不能識別,一些其他字元不能識別等等,所以使用了greta解決了那個問題 int caddmaker regexmatch cstring strs,cstring regex,cstringarray result match results r...

關於 正規表示式

網路程式設計中正規表示式的使用 最近開發涉及到很多網路程式設計和解析方面的,使用到正規表示式,剛開始一看,我暈,亂碼啊,這個到底是神馬啊。比如說下面這個東西 qregexp rx s 1234567890 正規表示式的概念就不仔細介紹,網上很多,也很清晰。下面只是此人個人觀點,與我本人無關,如有錯漏...

關於正規表示式

在對文字做處理的時候,比如說爬蟲對html頁面的清洗,需要做文字的匹配和替換操作。雖然一般string提供的搜尋和替換操作能夠得到準確的文字,但是缺乏靈活性。正規表示式則更好是解決這類問題的利器。學習材料來自菜鳥教程,看官可移步 這個教程裡詳細介紹了語法規則和各種 環境的使用方法,介紹的簡單明瞭。我...