pcre-intro-and-a-simple-package
Pcre
Perl Compatible Regular Expressions (PCRE) is a regular
expression C library inspired by the regular expression
capabilities in the Perl programming language, written
by Philip Hazel, starting in summer 1997.
因为最近工作内容的一部分需要做字符串的识别处理,所以就顺便用上了之前在PHP中用过的正则,在C/C++中本身不包含正则库,这里使用的pcre,对MFC开发,在这里提供了静态链接库,在引入lib跟.h文件后即可使用。
Regular Expression Syntax
然后是一些正则语法,官方的语法文档比较科学严谨,特别是对类似于贪婪匹配等细节的说明,当然一般的使用可以在网上找到很多匹配语法,例如这个。
PCRE函数介绍
pcre_compile
原型:
1 |
|
功能:将一个正则表达式编译成一个内部表示,在匹配多个字符串时,可以加速匹配。其同pcre_compile2功能一样只是缺少一个参数errorcodeptr。
参数:pattern
正则表达式options
为0,或者其他参数选项errptr
出错消息erroffset
出错位置tableptr
指向一个字符数组的指针,可以设置为空NULL
pcre_exec
原型:
1 |
|
功能:使用编译好的模式进行匹配,采用与Perl相似的算法,返回匹配串的偏移位置。
参数:code
编译好的模式extra
指向一个pcre_extra结构体,可以为NULLsubject
需要匹配的字符串length
匹配的字符串长度(Byte)startoffset
匹配的开始位置options
选项位ovector
指向一个结果的整型数组ovecsize
数组大小。
这里是两个最常用的函数的简单说明,pcre的静态库提供了一系列的函数以供使用,可以参考这个博客说明,另外对于以上函数的具体参数详细说明可以参考官网此处
一个丑陋的封装
1 | void COcxDemoDlg::pcre_exec_all(const pcre * re, PCRE_SPTR src, vector<pair<int, int>> &vc) |
vector中是全文匹配后的索引对,只是简单地用下。