PCRE正規表示式 零 環境搭建

2021-07-04 00:05:40 字數 3069 閱讀 8153

pcre是乙個用c語言編寫的正規表示式函式庫,專門解決c語言中使用正規表示式的問題。

大家可以直接用我的鏈結庫,也可也自己嘗試一下,我自己編譯時參考:pcre編譯參考

安裝完成後,我不同正規表示式應該怎麼編寫,pcre應該怎麼使用,就啥折騰了一下,下面是**,初步體驗一下pcre的作用。

#define main_3

/*main_2和main_3才是合理的用法*/

#ifdef main_0

#include

#include

#include

#include "pcre.h"

#define oveccount 30 /* should be a multiple of 3 */

#define ebuflen 128

#define buflen 1024

int main()

rc = pcre_exec(re, null, src, strlen(src), 0, 0, ovector, oveccount); //匹配pcre編譯好的模式,成功返回正數,失敗返回負數

if (rc<0)

else

free(re);

getchar();

return

1; }

printf("\nok, has matched ...\n\n"); //匹配成功把對應的正規表示式和號碼列印出來

printf("\nrc:%d\n\n", rc); //沒有出錯,已經匹配

if (rc > 0)

for (i = 0; i < rc; ++i)

free(re); //釋放記憶體

getchar();

return0;}

#endif

#ifdef main_1

#include

#include

#include "pcre.h"

#define oveccount 30 /* should be a multiple of 3 */

#define ebuflen 128

#define buflen 1024

int main()

rc = pcre_exec(re, // code, 輸入引數,用pcre_compile編譯好的正則表達結構的指標

null, // extra, 輸入引數,用來向pcre_exec傳一些額外的資料資訊的結構的指標

src, // subject, 輸入引數,要被用來匹配的字串

strlen(src), // length, 輸入引數, 要被用來匹配的字串的指標

0, // startoffset, 輸入引數,用來指定subject從什麼位置開始被匹配的偏移量

0, // options, 輸入引數, 用來指定匹配過程中的一些選項

ovector, // ovector, 輸出引數,用來返回匹配位置偏移量的陣列

oveccount); // ovecsize, 輸入引數, 用來返回匹配位置偏移量的陣列的最大大小

// 返回值:匹配成功返回非負數,沒有匹配返回負數

if (rc < 0)

printf("\nok, has matched ...\n\n"); //沒有出錯,已經匹配

printf("\nrc:%d\n\n", rc); //沒有出錯,已經匹配

for (i = 0; i < rc; i++)

pcre_free(re); // 編譯正規表示式re 釋放記憶體

getchar();

return

0;

} #endif

#ifdef main_2

#include

#include

#include "pcre.h"

#define oveccount 30/* should be a multiple of 3 */

#define ebuflen 128

#define buflen 1024

int main()

char *p = src;

while ( ( rc = pcre_exec(re, null, p, strlen(p), 0, 0, ovector, oveccount)) != pcre_error_nomatch )

p += ovector[1];

if ( !p )

} pcre_free(re);

getchar();

return

0; }

#endif

#ifdef main_3

#include

#include

#include "pcre.h"

#define oveccount 30/* should be a multiple of 3 */

#define ebuflen 128

#define buflen 1024

int main()

char *p = src;

while ( ( rc = pcre_exec(re, null, p, strlen(p), 0, 0, ovector, oveccount)) != pcre_error_nomatch )

p += ovector[1];

if ( !p )

} pcre_free(re);

getchar();

return

0; }

#endif

這裡一共有四個**,可以改變巨集定義#define main_3 or 2 or 1 or 0來看看效果。

PCRE 正規表示式

define pcre static 靜態庫編譯選項 include include include define oveccount 30 should be a multiple of 3 define ebuflen 128 define buflen 1024 int main rc pcr...

PCRE正規表示式語法

字元描述 將下乙個 字元標記為乙個特殊字元,或乙個原義字元,或向後引用,或乙個八進位制轉義符。例如,n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置,如果設定了regexp物件的multiline屬性,也匹配 n 或 r 之後的位置 匹配輸入字串的結束位置。如果設定了regexp物...

關於pcre正規表示式庫libpcre

gcc 4.8中已經包含了std regex的標頭檔案 可是沒有實現,所以鏈結是失敗的 gcc 4.9完整的支援了c 11的regex。在4.9以前,可以尋求boost的regex。不過,我更熟悉pcre,基於perl的正規表示式的實現。將庫配置為交叉編譯,只生成靜態庫,配置pcre 如下 bin ...