海詩網 知識百科 c++(c+編程教學)

c++(c+編程教學)

c++, 正則表達式,又稱正則表達式和正則表達式(英文:Regular ExpREssion,代碼中??s寫為regex、regexp或re)。

正則表達式使用單個字符串來描述和匹配一系列符合特定語法規(guī)則的字符串。

在C語言中,regcomp、regexec、regfree和regerror用于處理正則表達式。處理正則表達式有三個步驟:

1.編譯正則表達式regcomp;

2.匹配正則表達式,regexec;

3.釋放正則表達式。

c+編程教學

以下是對這三個功能的詳細解釋

1、int regcomp (regex_t *compiled,const char *pattern,int cflags)

該函數將指定的正則表達式模式編譯成編譯好的特定數據格式,可以使匹配更加有效。regexec函數將使用這些數據在目標文本字符串中進行模式匹配。執(zhí)行成功并返回0。

參數描述:

(1) regex _ t是一種結構化數據類型,用于存儲編譯后的正則表達式,其成員re_nsub用于存儲正則表達式中子正則表達式的個數,子正則表達式是用括號括起來的部分表達式。

模式是指向我們編寫的正則表達式的指針。

cflags有以下四個值或其or運算(|)后的值:

REG_EXTENDED匹配一個更強大的擴展正則表達式。

匹配字母時,REG_ICASE忽略大小寫。

REG_NOSUB不需要存儲匹配的結果。

REG_NEWLINE識別換行符,這樣$可以從行尾匹配,$可以從行首匹配。

2. int regexec (regex_t *compiled, char *string, size_t nmatch, regmatch_t matchptr [], int eflags)

當我們編譯正則表達式時,我們可以用regexec匹配我們的目標文本字符串。如果在編譯正則表達式時沒有將cflags的參數指定為REG_NEWLINE,缺省情況下會忽略換行符。

也就是說,整個文本字符串被視為一個字符串。執(zhí)行成功并返回0。

Regmatch_t是一種結構數據類型,在regex.h:

typedef struct

{

regoff_t rm_so;

regoff_t rm_eo;

} regmatch_t;

成員rm_so存儲匹配文本字符串在目標字符串中的起始位置,rm_eo存儲結束位置。通常我們以數組的形式定義一組這樣的結構。因為通常我們的正則表達式也包含子正則表達式。數組0單元存儲主正則表達式的位置,

以下單元依次存儲子正則表達式的位置。

參數描述:

compiled是用regcomp函數編譯過的正則表達式。

字符串是目標文本字符串。

nmatch是regmatch_t結構數組的長度。

MatchptrregMatch _ T類型的結構數組,存儲匹配文本字符串的位置信息。

eflags有兩個值。

REG_NOTBOL按照我的理解,如果指定了這個值,那么我們不會從我們的目標字符串開始匹配??傊疫€是不太明白這個參數的含義;

REG_NOTEOL的功能和上面的一樣,但是這個指定結束于行尾。

3. void regfree (regex_t *compiled)

當我們使用編譯后的正則表達式或者重新編譯其他正則表達式時,我們可以使用這個函數清空編譯后的正則表達式指向的regex_t結構的內容。請記住,如果它被重新編譯,

確保首先清空regex_t結構。

4. size_t regerror (int errcode, regex_t *compiled, char *buffer, size_t length)

當執(zhí)行regcomp或regexec時出現錯誤時,可以調用此函數并返回包含錯誤信息的字符串。

參數描述:

errcode是regcomp和regexec函數返回的錯誤代碼。

compiled是用regcomp函數編譯過的正則表達式,該值可以為空。

buffer指向用于存儲錯誤信息的字符串的內存空間。

長度表示緩沖區(qū)的長度。如果該錯誤消息的長度大于該值,regerror函數將自動截斷超出的字符串,但它仍將返回完整字符串的長度。

所以我們可以先用下面的方法得到錯誤字符串的長度。

size_t length=regerror (errcode, compiled, NULL, 0);

c+編程教學

關于C中處理正則表達式的方法,就分享到這里吧!

c++,以上就是本文為您收集整理的c++最新內容,希望能幫到您!更多相關內容歡迎關注。

本文來自網絡,不代表海詩網立場,轉載請注明出處:http://x91880.com/n/169794.html
      

法定結婚年齡,結婚應當男女雙方完全自愿

發(fā)表回復
聯系我們
聯系我們

在線咨詢: QQ交談

郵箱: 3587015498@qq.com

工作時間:周一至周五,9:00-17:30,節(jié)假日休息

關注微信
微信掃一掃關注我們
微信掃一掃關注我們
關注微博
返回頂部