PCRE接口pcre_fullinfo混合子模式调用结果
NGINX中使用PCRE最为正则表达式的解析接口,对编译和解析过程中的一些点进行了测试验证
PCRE接口pcre_fullinfo()的描述在这个链接中有详细的描述,这里对接口的一些
链接 http://mushclient.com/pcre/index.html
这里描述一下命名子模式(named subpattern)和非命名子模式(numbering subpattern)混合使用的情况接口
PCRE_INFO_CAPTURECOUNT: 得到的是所有子模式的个数,包含上述的两种子模式个数;
PCRE_INFO_NAMECOUNT: 得到的是命名子模式的个数,不包括非命名子模式的个数;
PCRE_INFO_NAMETABLE:
对于只有命名子模式的情况,例如文档描述的一个例子:
(?<date> (?<year>(\d\d)?\d\d) - (?<month>\d\d) - (?<day>\d\d) )
00 01 d a t e 00 ??
00 05 d a y 00 ?? ??
00 04 m o n t h 00
00 02 y e a r 00 ??
而对于混合模式;例子如下,注意开头的两个数字,就是说capture的数字是和非命名子模式一起排列的,也就是根据左括号的先后排列的:
(eeeee)(?<abb> exception)(?<adfa>xydz)(ddddd)\k<abb>\1\2
{captures 4
named_captures 2
name_size 7}
0 2 abb??
0 3 adfa
测试例子
#include <stdlib.h>
#include <pcre.h>#define NGX_REGEX_CASELESS PCRE_CASELESStypedef struct {pcre *code;pcre_extra *extra;
} ngx_regex_t;int main()
{pcre *re;char *errstr;int erroff;int captures =0, named_captures, name_size;char *name;char *data = "(eeeee)(?<abb> exception)(?<adfa>xydz)(ddddd)\\k<abb>\\1\\2";int n, i;char *p; printf("%s \n", data);p = data;printf("%s \n", p);re = pcre_compile(data, PCRE_CASELESS, &errstr, &erroff, NULL);if(NULL == re){printf("compile pcre failed\n");return 0;}n = pcre_fullinfo(re, NULL, PCRE_INFO_CAPTURECOUNT, &captures);if(n < 0){printf("pcre_fullinfo PCRE_INFO_CAPTURECOUNT failed %d \n", n);return 0;} printf(" captures %d \n", captures);n = pcre_fullinfo(re, NULL, PCRE_INFO_NAMECOUNT, &named_captures);if(n < 0){printf("pcre_fullinfo PCRE_INFO_NAMECOUNT failed %d \n", n);return 0;}printf("named_captures %d \n", named_captures);n = pcre_fullinfo(re, NULL, PCRE_INFO_NAMEENTRYSIZE, &name_size);if(n < 0){printf("pcre_fullinfo PCRE_INFO_NAMEENTRYSIZE failed %d \n", n);return 0;}printf("name_size %d \n", name_size);n = pcre_fullinfo(re, NULL, PCRE_INFO_NAMETABLE, &name);if(n < 0){printf("pcre_fullinfo PCRE_INFO_NAMETABLE failed %d \n", n);return 0;}p =name;int j;for(j = 0; j < named_captures; j++){for(i = 0; i <2; i++){printf("%x ", p[i]); }printf("%s \n", &p[2]);p += name_size;}return 1;
}
---------------------
作者:zwleagle
来源:CSDN
原文:https://blog.csdn.net/zwleagle/article/details/8563364
版权声明:本文为博主原创文章,转载请附上博文链接!
PCRE接口pcre_fullinfo混合子模式调用结果相关推荐
- Matlab.NET混合编程调用Figure窗体
原文:[原创]Matlab.NET混合编程调用Figure窗体 1.前言 做Matlab.NET混合编程好几年了,虽然Matlab很多函数忘记得差不多了,但基本的东西还是能熟练使用.特别是在C#调用M ...
- 怎么看调用的接口_SpringCloud服务间调用
本篇简介 在上一篇我们介绍了SpringCloud中的注册中心组件Eureka.Eureka的作用是做服务注册与发现的,目的是让不同的服务与服务之间都可以通过注册中心进行间接关联,并且可以通过注册中心 ...
- 【WebService笔记01】使用JWS实现WebService接口的发布和调用
这篇文章,主要介绍如何使用JWS实现WebService接口的发布和调用. 目录 一.JWS实现WebService接口 1.1.JWS发布WebService接口 (1)编写接口 (2)编写实现类 ...
- 银联商务MISPOS接口开发demo 需要调用POSINF.DLL
1.接口文档 1.1 无gmc界面接口 (dll/ocx) dll调用(posinf.dll)函数名为:int bankall (char * request,char *response),其中第一 ...
- java扫描接口_一种扫描接口并生成可调用API接口文档的方法与流程
本发明属于JavaWeb开发技术领域,涉及一种API接口文档的生成方法,尤其是一种扫描接口并生成可调用API接口文档的方法. 背景技术: API(Application Programming Int ...
- LabVIEW与MATLAB混合编程——调用Matlab中.m的函数
LabVIEW与MATLAB混合编程--调用Matlab中.m的函数 1.调用labview中的matlab script 通过Labview中的Matlab script可以调用Matlab的.m程 ...
- 淘宝网及新浪网等几大官方IP查询API接口地址库的调用及使用方法教程
淘宝对外提供共享的一个IP地址库API,更新也比较及时,非常适合我们日常的使用. 以下讨论的是和淘宝网 IP查询 地址库 调用 API 相关的淘宝网及新浪网等几大官方IP查询API接口地址库的调用及使 ...
- python调用第三方接口获取数据_python 接口实现 供第三方调用的例子
python 接口实现 供第三方调用的例子 实验环境 1.环境问题 python 2.7 以上自带的pyunit bottle 作为一个python的简易服务器 在python安装目录 打开命令窗口( ...
- 开发者必备工具,一键生成接口文档、调用示例
前言 开发中,接口文档很重要,特别是现在web开发都开始前后端分离了,更加需要一个好的接口文档. 那要怎么快速的出接口文档.调用示例.mock呢?如果太麻烦,很多人就不愿意去写了. 今天给大家介绍一个 ...
最新文章
- POJ1465 Multiple——Bfs+余数判重——Pku1465
- python的68个内置函数
- oracle开放查询表权限_oracle 查询当前用户的表和其他用户的表
- 数据库毗连过多的错误,年夜概的启事分解及措置惩罚行动
- 中psr_PSR-SX900测评:雅马哈升级幅度较大的高品质编曲键盘
- linux用户登录实验,实验三 Linux系统登录及用户管理
- excel 科学计数法转换成文本完整显示_表格技巧—Excel里身份证号码显示不全的多种解决办法...
- linux mysql配置文件修改编码,linux修改mysql字符集编码
- Robotium测试报告的生成方法(下)
- 软件测试之测试报告案例
- 20172328的结对编程四则运算第二周-整体总结
- 我与龙芯电脑的第一次亲密接触
- Python九九口诀表
- HDU 6148 Valley Numer(数位DP)
- 《MySQL数据库进阶实战》读后感(SQL 小虚竹)
- 杂记(二):while(*target++)(位于小甲鱼C语言视频第22课)
- 仿牌独立站如何通过PayPal.Me亲友付进行收款
- ant脚本编译java_1.4 在Ant中编译Java代码
- tiri单片机_51单片机的SCON寄存器与C程序解析
- VScode常用快捷键总结
热门文章
- 如何获取FragmentTabHost中指定标签页的Fragment
- JSP中 request.getRealPath(/xx/yy) 方法提示已经过时的替代方法
- 如何监控和提高IIS的性能
- 为了不再颓废,不再堕落......转操作系统为ubuntu,转语言环境为java...
- 郁闷的 ConfigurationManager.OpenExeConfiguration
- 中石油训练赛 - Flow Finder(树上模拟)
- POJ - 3304 Segments(简单几何)
- DCN RepPoints解读
- 数据分析与挖掘-python常用数据预处理函数
- __declspec(selectany)的作用