歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 正則表達式庫 PCRE 簡述

正則表達式庫 PCRE 簡述

日期:2017/3/1 9:46:19   编辑:Linux編程

如果問c++的標准庫裡最缺乏的功能,正則表達式估計能排進前3,尤其在web開發領域,沒有正則表達式實在令人太難受了,ruby,php人家都自帶啊。成熟的c/c++正則庫不多,首選應該是boost中的正則庫,但也意味著你要引入boost這個龐然大物,對於追求微內核的程序而言,有點過重,甚至很多C++開發人員也比較抵觸:)

在boost之外,比較有名的就是PCRE了,pcre是c實現的,可以在這裡下載。

網上有段示例代碼,如下:

#include <pcre.h>
#include <stdio.h>
#include <string.h>
                                      
int main(int argc, char ** argv)
{
    if (argc != 3)
    {   
        printf("Usage: %s pattern text\n", argv[0]);
        return 1;
    }   
                                      
    const char * pPattern = argv[1];
    const char * pText = argv[2];
    const char * pErrMsg = NULL;
    pcre * pPcre = NULL;
    int nOffset = -1; 
                                      
    if (NULL == (pPcre = pcre_compile(pPattern, 0, &pErrMsg, &nOffset, NULL)))
    {   
        printf("ErrMsg=%s, Offset=%d\n", pErrMsg, nOffset);
        return 1;
    }   
    else
    {   
        if (pcre_exec(pPcre, NULL, pText, strlen(pText), 0, 0, NULL, 0) < 0)
        {   
            printf("%s doesn't match %s\n", pText, pPattern);
        }   
        else
        {   
            printf("%s matches %s\n", pText, pPattern);
        }
    }
}

大致流程是先pcre_compile正則文本,再傳入需要匹配的內容,更多API請見這裡。

如果覺得c api 用起來不太方便,之前有個流傳比較廣的c++版本,對pcre進行了對象封裝,但是從這個網站來看,貌似好幾年沒更新了,實際上,pcre 本身就有提供c++ api,還是google提供的,直接 include pcrecpp.h 即可,相關文檔可以在這裡看。

PCRE 的詳細介紹:請點這裡
PCRE 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved