c++ PCRE 正则表达式 RegularExpressions

本文介绍了PCRE(Perl Compatible Regular Expressions)及其C++封装版本PCRE++。PCRE是一个广泛使用的正则表达式库,兼容Perl的正则表达式语法。PCRE++为C++开发者提供了更便捷的接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++ 正则表达式

PCRE2

PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言、R脚本语言,此外,正如从其名字所能看到的,PCRE也是perl语言的缺省正则库。
PCRE是用C语言实现的,其C++实现版本是PCRE++。

  1. 什么是PCRE? 什么是PCRE++?
    PCRE,全称是Perl Compatible Regular Expressions。从名字我们可以看出PCRE库是与Perl中正则表达式相兼容的一个正则表达式库。PCRE是免费开源的库,它是由C语言实现的,
    这里是它的官方主页:
    http://www.pcre.org/
    感兴趣的朋友可以在这里了解更多的内容。
    要得到PCRE库,可以从这里下载:
    http://sourceforge.net/projects/pcre/files/

PCRE++是一个对PCRE库的C++封装,它提供了更加方便、易用的C++接口。这里是它的官方主页:http://www.daemon.de/PCRE,感兴趣的朋友可以在这里了解更多的内容。
要得到PCRE++库,可以从这里下载:
http://www.daemon.de/PcreDownload

You can download the current release of the PCRE2 library from its official home on GitHub:

https://github.com/PhilipHazel/pcre2/releases
You can also download PCRE2 or the older, unmaintained PCRE library from an unofficial mirror at SourceForge:

https://sourceforge.net/projects/pcre/files/

“基于PCRE2的完全封装+功能扩展正则表达式模块!!!” 关于PCRE2: pcre2是一个超强大的正则表达式库,它与Perl兼容,有众多的程序嵌入了它 比如 PHP、Nginx等 Unicode支持: pcre2有三个库,libpcre2-8、libpcre2-16、libpcre2-32,分别支持 1字节代码单元(UTF-8)、2字节代码单元(UTF-16)、4字节代码单元(UTF-32)。 这三个库我都已经编译并且放入压缩包,模块也实现完全封装全部支持,在普通使用中我们只需要用到 libpcre2-8这个库,如果需要Unicode支持则需要用到libpcre2-16这个库而libpcre2-32为32位代码单元支持,模块也支持,根据需求使用选择库。 模块公开的函数和类: 使用说明: P_正则全局加载链接库:加载全局链接库(载入DLL) P_正则编译表达式:编译一个表达式,如果成功返回表达式句柄 P_正则内容替换:进行匹配和替换 P_正则内容高级替换: 进行匹配和替换,不同于内容替换的是这个功能允许使用 \0 \1 \2这种类型的格式字符串传入,用以匹配 完整表达式捕获、第一个子表达式捕获、第二个子表达式捕获,同理支持最大\99 假设表达式为:(\d+)*(\d+),文本内容为:“100*200”,此处的格式为:“\1 => \2”,则最终替换返回的结果为:“100 => 200” P_正则内容匹配: 此功能用于判断某个文本是否与表达式匹配,匹配成功返回真,否则返回假 P_正则内容搜索: 此函数通过已编译的表达式进行搜索内容,如果成功将返回一个搜索结果指针,如果启用全部搜索则返回一个搜索结果数组指针,如果无匹配返回0 。。。。。不一一叙述了,模块内有注释,不懂可以加下面的群 P_正则表达式类 封装于面向过程为类 P_正则表达式_便捷 与 P_正则表达式类 相同,但更加便捷操作 所有函数名称带W的表示支持 8/16/32 位字符单元模式(使用16位模式即可支持通常的Unicode),普通模式不支持宽文本的函数有备注 关于JIT: pcre2库支持JIT编译表达式, 启用JIT编译在编译时稍微多耗费一些时间,但在匹配时速度快得多,这通常运用于单个模式进行多次匹配时需要 关于命名子表达式: 表达式允许加入‘命名标签’,使用命名标签的格式:(?(子表达式)) 例如表达式:(?( [1-9][0-9]{4,} ))匹配文本:jhbxwe8769933jdhxcn 那么将会匹配到 8769933 ,由于前面命名子表达式为name,则可以使用 P_正则取子匹配文本_从名称(搜索结果,name)来获取到 8769933
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值