0.pcre_exec
原型:
#include <pcre.h>
int pcre_exec(const pcre *code, const pcre_extra *extra, const char *subject, int length, int startoffset
, int options, int *ovector, int ovecsize);
功能:匹配成功返回非负数,没有匹配返回负数
参数:
code 输入参数,用pcre_compile编译好的正则表达结构的指针
extra 输入参数,用来向pcre_exec传一些额外的数据信息的结构的指针
subject 输入参数,要被用来匹配的字符串
length 输入参数, 要被用来匹配的字符串的指针
startoffset 输入参数,用来指定subject从什么位置开始被匹配的偏移量
options 输入参数, 用来指定匹配过程中的一些选项
ovector 输出参数,用来返回匹配位置偏移量的数组,本质上是多维数组
ovecsize 输入参数, 用来返回匹配位置偏移量的数组的最大大小 ovector的最后1/3个空间,即[2n~3n-1],貌似为pcre正则匹配算法预留,不返回结果
1.pcre_compile
原型:
#include <pcre.h>
pcre *pcre_compile(const char *pattern, int options, const char **errptr, int *erroffset, const unsigned char *tableptr);
功能:讲一个正则表达式编译成一个内部表示,在匹配多个字符串时,可以加速匹配。其同pcre_compile2功能一样只是缺少一个参数errorcodeptr。
参数:
pattern 正则表达式
option 为0,或者其他参数选项
errptr 出错信息
erroffset 出错信息
tableptr 指向一个字符数组的指针,可以设置为空NULL
2.pcre_compile2
原型:
#include <pcre.h>
pcre *pcre_compile2(const char *pattern, int options, int *errorcodeptr, const char **errptr, int *erroffset,
const unsigned char *tableptr);
功能:将一个正则表达式编译成一个内部表示,在匹配多个字符串时,可以加速匹配。其同pcre_compile功能一样只是多一个参数errorcodeptr。
参数:
pattern 正则表达式
options 为0,或者其他参数选项
errorcodeptr 存放出错码
errptr 出错消息
erroffset 出错位置
tableptr 指向一个字符数组的指针,可以设置为空NULL
3.pcre_config
原型:
#include <pcre.h>
int pcre_config(int what, void *where);
功能:查询当前PCRE版本中使用的选项信息。
参数:
what 选项名
where 存储结果的位置
4.pcre_copy_named_substring
原型:
#include <pcre.h>
int pcre_copy_named_substring(const pcre *code, const char *subject, int *ovector, int stringcount,
const char *stringname, char *buffer, int buffersize);
功能:根据名字获取捕获的字串
参数:
code 成功匹配的模式
subject 匹配的串
ovector pcre_exec()使用的偏移向量
stringcount pcre_exec()的返回值
stringname 捕获字串的名字
buffer 用来存储的缓冲区
buffersize 缓冲区大小
5.pcre_copy_substring
原型:
#include <pcre.h>
int pcre_copy_substring(const char *subject, int *ovector, int stringcount, int stringnumber, char *buffer, int buffersize);
功能:根据编号获取捕获的字串
参数:
code 成功匹配的模式
subject 匹配的串
ovector pcre_exec()使用的偏移向量
stringcount pcre_exec()的返回值
stringnumber 捕获字串编号
buffer 用来存储的缓冲区
buffersize 缓冲区大小
6.pcre_dfa_exec
原型:
#include <pcre.h>
int pcre_dfa_exec(const pcre *code, const pcre_extra *extra, const char *subject, int length, int startoffset, int options,
int *ovector, int ovecsize, int *workspace, int wscount);
功能:使用编译好的模式进行匹配,采用的是一种非传统的方法DFA,只是对匹配串扫描一次(与Perl不兼容)
参数:
code 编译好的模式
extra 指向一个pcre_extra结构体,可以为NULL
subject 需要匹配的字符串
length 匹配的字符串长度(Byte)
startoffset 匹配的开始位置
options 选项位
ovector 指向一个结果的整形数组
ovecsize 数组大小
workspace 一个工作区数组
wscount 数组大小
7.pcre_copy_substring
原型:
#include <pcre.h>
int pcre_exec(const pcre *code, const pcre_extra *extra, const char *subject, int length, int startoffset, int options,
int *ovector, int ovecsize);
功能:使用编译好的模式进行匹配,采用与Perl相似的算法,返回匹配串的偏移位置
参数:
code 编译好的模式
extra 指向一个pcre_extra结构体,可以为NULL
subject 需要匹配的字符串
length 匹配的字符串长度(Byte)
startoffset 匹配的开始位置
options 选项位
ovector 指向一个结果的整形数组
ovecsize 数组大小
8.pcre_free_substring
原型:
#include <pcre.h>
void pcre_free_substring(const char *stringptr);
功能:释放pcre_get_substring()和pcre_get_named_substring()申请的内存空间
参数:
stringptr 指向字符串的指针

Sword pcre库函数学习一的更多相关文章

  1. Sword pcre库函数学习三

    14.pcre_get_substring_list 原型: #include <pcre.h> int pcre_get_substring_list(const char *subje ...

  2. Sword pcre库函数学习二

    9.pcre_free_substring_list 原型: #include <pcre.h> void pcre_free_substring_list(const char **st ...

  3. Sword pcre库使用

    #include <stdlib.h> #include <string.h> #include "regularhelper.h" #include &q ...

  4. Sword cjson库函数使用

    /* cjson库的使用 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #includ ...

  5. 在C语言中利用PCRE实现正则表达式

    1. PCRE简介 2. 正则表达式定义 3. PCRE正则表达式的定义 4. PCRE的函数简介 5. 使用PCRE在C语言中实现正则表达式的解析 6. PCRE函数在C语言中的使用小例子 1. P ...

  6. PHP学习笔记 - 进阶篇(5)

    PHP学习笔记 - 进阶篇(5) 正则表达式 什么叫正则表达式 正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式. $p = '/apple/' ...

  7. PHP学习之-正则表达式

    PHP学习之-正则表达式 1.什么是正则表达式 正则表达式是对字符串处理额一种逻辑公式,就是用特定的字符串组合成一个规则的字符串,称之为正则匹配模式 $p = '/apple/'; $str = '' ...

  8. PCRE-正则库及用法

    摘自http://blog.chinaunix.net/uid-26575352-id-3517146.html    在C语言中利用PCRE实现正则表达式 http://www.pcre.org/ ...

  9. iBase4J部署总结

    iBase4J部署总结 序言 最近看到个分布式框架,只有一个字:好.所以部署起来看看.开始的时候说实话遇到了点困难.去码云上看了下,貌似想得到指导要加入一个群,而且需要收费的,反正闲来无事,索性自己搞 ...

随机推荐

  1. Python 父目录获取

    # coding=utf-8import os currentPath = os.getcwd() # 当前目录parent_path = os.path.dirname(currentPath) # ...

  2. js正则表达式实现手机号码,密码正则验证

    手机号码,密码正则验证. 分享下javascript中正则表达式进行的格式验证,常用的有手机号码,密码等. /** * 手机号码 * 移动:134[0-8],135,136,137,138,139,1 ...

  3. SerDes、RocketIO、GTX

    1.SerDes:serdes = serial and deserial,就是组串器与解串器,也就是通用的高速IO. GTX,GTP,GTH等都是SERDES,只是速率不一样,XILINX叫其不同的 ...

  4. Android API Guides---Drag and Drop

    Drag and Drop 随着Android拖/放框架,能够同意用户将数据从一个视图使用图形拖动移动到还有一个查看当前布局和下降的手势. 该框架包含一个拖放事件类,拖累听众和辅助方法和类. 尽管该框 ...

  5. Azure产品目录

    计算 Linux 虚拟机:为 Ubuntu.Red Hat 等预配虚拟机 Windows 虚拟机 为 SQL Server.SharePoint 等预配虚拟机 应用服务 快速创建适用于 Web 和移动 ...

  6. c++中数据表如何转成业务实体--map和结构体的相互转换

    应用场景:如何把数据库表中的一行转换成一个业务实体结构体,c#和java中都有实体框架,表到实体的转换很方便,c++中缺少这些框架,但是有一些折中的办法去做.其实问题的本质是:map如何转成结构体. ...

  7. MyBean-关于单实例插件

    单实例插件可以通过两个途径实现 第一个在注册时注册成单实例 beanFactory.RegisterBean(pvPluginID: String; pvClass: TClass;     pvSi ...

  8. canvas的图片绘制案例

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  9. CentOS6.5 安装Nexus配置Maven私服

    1.下载Nexus的tar包,链接地址.注意,3.x版本需要JDK版本1.8及以上版本. 2.创建安装包存放目录 命令:mkdir -p /usr/local/src/installs 3.rz或者f ...

  10. Linux screen用法简介

    [admin@VM_0_2_centos ~]$ screen -bash: screen: 未找到命令 [admin@VM_0_2_centos ~]$ sudo su [sudo] passwor ...