關於 正規表示式

2021-06-02 14:21:32 字數 2008 閱讀 9167

網路程式設計中正規表示式的使用

最近開發涉及到很多網路程式設計和解析方面的, 使用到正規表示式, 剛開始一看,我暈,亂碼啊,這個到底是神馬啊。

比如說下面這個東西:

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提供的搜尋和替換操作能夠得到準確的文字,但是缺乏靈活性。正規表示式則更好是解決這類問題的利器。學習材料來自菜鳥教程,看官可移步 這個教程裡詳細介紹了語法規則和各種 環境的使用方法,介紹的簡單明瞭。我...