PCRE 简介

PCRE 简介介绍 PCRE nbsp PerlCompatib 是一个用 C 语言编写的正则表达式函数库 本文简要介绍 PCRE 的编译和使用方法 编译从 PCRE 官网下载后 解压 本人下的版本为 pcre2 10 21 仔细阅读 README 和 NON AUTOTOOLS BUILD 里面介绍了很多编译的方法 由于本人需要在 VS 下开发 因此选择 CMake 编译 nbsp 1

介绍

PCRE (Perl Compatible Regular Expressions) 是一个用C语言编写的正则表达式函数库。本文简要介绍PCRE的编译和使用方法。

编译

使用

  • 建立工程的时候需要配置字符长度,例如定义宏 PCRE2_CODE_UNIT_WIDTH=8
  • 如果使用静态库,需要定义宏 PCRE2_STATIC
  • 这里仅列出简单的使用说明,具体的API使用方法详见API说明文档。
  •  
    #include "pcre2.h" #include 
        
          #include 
         
           int main(void) { const std::string pattern{ "\\d{3,5}" }; int error_code = 0; PCRE2_SIZE error_offset = 0; pcre2_code *code = pcre2_compile(reinterpret_cast 
          
            (pattern.c_str()), PCRE2_ZERO_TERMINATED, 0, &error_code, &error_offset, NULL); if (code == NULL) { return -1; } const std::string subject{ "tel1:1234;tel2:3456;tel3:5678" }; pcre2_match_data *match_data = pcre2_match_data_create_from_pattern(code, NULL); int rc = 0; int start_offset = 0; unsigned int match_index = 0; while ((rc = pcre2_match(code, reinterpret_cast 
           
             (subject.c_str()), subject.length(), start_offset, 0, match_data, NULL)) > 0) { PCRE2_SIZE *ovector = pcre2_get_ovector_pointer(match_data); int i = 0; for (i = 0; i < rc; i++) { std::cout << "match " << ++match_index << ": " << std::string(subject.c_str() + ovector[2*i], ovector[2*i + 1] - ovector[2*i]) << std::endl; } start_offset = ovector[2*(i-1) + 1]; } return 0; } 
            
           
          
        
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203309.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:06
下一篇 2026年3月19日 下午10:06


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号