網路程式設計中正規表示式的使用
最近開發涉及到很多網路程式設計和解析方面的, 使用到正規表示式, 剛開始一看,我暈,亂碼啊,這個到底是神馬啊。
比如說下面這個東西:
qregexp rx("([^
]*>)(]*>)([^>]*>)[^\s]([^1234567890-]*)([^
正規表示式的概念就不仔細介紹, 網上很多,也很清晰。
下面只是此人個人觀點, 與我本人無關, 如有錯漏,也不追究。
所謂正規表示式就是在一堆都字串中尋找自己需要的資料, 這個難度猶如在茫茫人海中,需找心中的她。
比如有在一篇文章中尋找某個單詞, 或者記錄這個單詞的個數,等等。下面說說此人在天氣預報模組中使用到的正規表示式。
12月12日星期一
晴轉多雲10℃/6℃東北風3-4級
12月13日星期二
多雲13℃/8℃東北風3-4級
12月14日星期三
多雲轉陰13℃/7℃東北風4-5級
12月15日星期四
小雨轉陰11℃/6℃北風4-5級
12月16日星期五
多雲8℃/3℃我要在上面這些資訊中提取這樣的資訊。北風4-5級
上海,12月12日,星期一,晴轉多雲,東北風3到4級,最低溫度6℃, 最高溫度10℃。
當然使用xml 解析類也是可以的, 但是使用正規表示式 **很簡潔,而且可以寫到檔案中, 程式啟動時載入,萬一以後網頁布局,或者你要解析的檔案改變了, 重新寫一條語法就可以了,這個是老大說的, 我想應該是這樣的把, 不管你信不, 反正我是信了。
主要語法如下(qt的語法,其他語言也是同理)
qregexprx("([^
]*>)(]*>)([^>]*>)[^\s]([^1234567890-]*)([^
int pos = 0; // where we are inthe string
int count = 0; // how many ericand eirik's we've counted
while (-1 != (pos = rx.indexin(netstring, pos)))
//pos = rx.indexin(netstring,1);
qstring date = rx.cap(1); //月12日星期一
qstring icond = rx.cap(4); //d00
qstring iconn = rx.cap(7); // n01
qstring weather = rx.cap(9); //晴轉多雲
qstring temprature = rx.cap(10);// 10℃/6℃
qstring wind = rx.cap(11); //東北風3-4級
當然還可以替換』/』 為 到 等等,根據需求來再次組織資料。
下面簡單解釋下這句正規表示式的意思
([^]*>)(]*>)([^>]*>)[^\s]([^1234567890-]*)([^
括號包含的是我們需要的東西rx.cap(1)表示第乙個括號。
:示一直到
[^([^
開始到其他語句就暫時不解釋了。
正規表示式用得好的話, 哪怕你在大海中也能撈上一顆針來,找東西真是方面啊, 當然用不好的話,編譯就有問題,怎麼弄他都沒有反應, 這個多除錯,程式都是除錯出來的。
正規表示式說白了就是程式中找東西的那麼乙個東西, 如果你要找個什麼東西,那麼你找它幫忙, 或者你像替換一些東西,它也是很方便的。
關於正規表示式
前言 regular expressions 正規表示式,以下用re稱呼 對小弟來說一直都是神密的地帶,看到一些網路上的大大,簡單用re就決解了某些文字的問題,小弟便興起了學一學re的想法,但小弟天生就比較懶一些,總希望看有沒有些快速學習的方式,於是小弟又請出google大神,借由祂的神力,小弟在網...
關於正規表示式
使用atl中的正規表示式總是會多多少少的出問題,比如 不能識別,一些其他字元不能識別等等,所以使用了greta解決了那個問題 int caddmaker regexmatch cstring strs,cstring regex,cstringarray result match results r...
關於正規表示式
在對文字做處理的時候,比如說爬蟲對html頁面的清洗,需要做文字的匹配和替換操作。雖然一般string提供的搜尋和替換操作能夠得到準確的文字,但是缺乏靈活性。正規表示式則更好是解決這類問題的利器。學習材料來自菜鳥教程,看官可移步 這個教程裡詳細介紹了語法規則和各種 環境的使用方法,介紹的簡單明瞭。我...