首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

在 C 語言中巧用正則表達式:PCRE 庫編譯、匹配與實戰指南

     編輯:C 語言基礎

背景

標準 C/C++ 不支持正則表達式,但可借助第三方庫,最著名為 Philip Hazel 的 PCRE(Perl-Compatible Regular Expressions),多數 Linux 發行版預裝。

核心 API 雙步走

  1. 編譯正則:regcomp() 將字符串正則編譯為 regex_t 結構。
    int regcomp(regex_t *preg, const char *regex, int cflags);
    成功返回 0,preg 填充編譯結果,cflags 控制處理細節。
  2. 匹配正則:regexec() 執行模式匹配。
    int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
    regmatch_t 包含 rm_so(起始偏移)和 rm_eo(結束偏移),用於返回匹配位置。nmatch 和 pmatch 配合返回子表達式匹配結果。

工作流程

regex_t re;
regcomp(&re, "^[a-z]+@[a-z]+\\.[a-z]+$", REG_EXTENDED);  // 編譯郵箱正則
regmatch_t matches[1];
if (regexec(&re, "test@example.com", 1, matches, 0) == 0) {
    // 匹配成功,matches[0] 含整體匹配區間
}
regfree(&re);  // 釋放編譯後的 regex_t

關鍵提示

  • 使用前務必檢查 regcomp 返回值。
  • cflags 常用 REG_EXTENDED(擴展正則)、REG_ICASE(忽略大小寫)、REG_NEWLINE(換行敏感)。
  • 匹配完成後調用 regfree 釋放資源。

掌握 PCRE API,讓 C 語言也能輕鬆處理複雜文本解析任務。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved