c语言使用正则,C语言中使用正则表达式
POSIX 規定了C語言正則表達式庫函數
regcomp():編譯正則表達式
regexec():匹配正則表達式
regfree():釋放正則表達式
1、int? regcomp(regex *compiled,const char *pattern,int cflags)
成功返回0,失敗返回錯誤號
compiled:結構體,用來存放編譯后的正則表達式,(字符串變成結構體)
pattern:指向正則表達式的指針
cflags:指定是用基礎正則(直接傳0)還是擴展正則,(可以通過|取多個值)值如下:
REG_EXTENDED? :使用擴展正則
REG_ICASE? ? :匹配字母時忽略大小寫
REG_NOSUB:不用存儲匹配后的結果,只返回是否成功匹配。如果設置該標志位,則在regexec中將忽略nmatch和pmatch兩個參數。即:傳入該參數后,regexec中nmatch 取0,matchptr取NULL。
REG_NEWLINE:識別換行符,即從^開頭開始匹配,從$行為開始匹配。
2、int regexec(regex_t *compiled,char*string,size_t nmatch,regmatch_t matchptr[].int eflags)
成功返回0,失敗返回錯誤號
compiled:regcomp 編譯好的結構體
string:待用正則表達式進行匹配的字符串(目標文件中的一行)
nmatch,matchptr:
matchptr返回匹配的每一行;nmatch返回匹配的行數。
eflags:
REG_NOTBOL:讓特殊字符^無作用
REG_NOTEOL:讓特殊字符$無作用
typedef struct{
regoff_t rm_so;? // start...? 保存匹配了字符串起始位置
regoff_t rm_eo;?? // end..? ?保存匹配了字符串結束位置
}regmatch_t;
3、void regfree(regex_t *compiled)
釋放結構體。
4、size_t regerror(int errcode,regex_t *compiled,char *buffer,size_t length);
針對正則表達式的錯誤處理函數
errcode :傳入1.2函數的返回值,判斷錯誤類型
buffer:錯誤信息。
length:buffer的長度,若錯誤信息的長度大于這個值,則regerror函數會自動截斷超出的字符串,
但仍會返回完整的字符串長度,故可以用如下方法先的到錯誤字符串的長度:
size_t length = regerror(errcode,compiled,NULL,0);
本文地址:https://blog.csdn.net/modi000/article/details/107296054
總結
以上是生活随笔為你收集整理的c语言使用正则,C语言中使用正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言中 文件的字符串输入函数是6,【C
- 下一篇: c语言计算机二级改错题类型,C语言计算机