PCRE demo【转】
原文:http://hi.baidu.com/cr0_3/item/b519420b8eba99d773e67685
#define PCRE_STATIC // 静态库编译选项
#include <stdio.h>
#include <string.h>
#include <pcre.h>
#define OVECCOUNT 30 /* should be a multiple of 3 */
#define EBUFLEN 128
#define BUFLEN 1024
int main()
{
pcre *re;
const char *error;
int erroffset;
int ovector[OVECCOUNT];
int rc, i;
char src [] = "111 <title>Hello World</title> 222"; // 要被用来匹配的字符串
char pattern [] = "<title>(.*)</(tit)le>"; // 将要被编译的字符串形式的正则表达式
printf("String : %s\n", src);
printf("Pattern: \"%s\"\n", pattern);
re = pcre_compile(pattern, // pattern, 输入参数,将要被编译的字符串形式的正则表达式
0, // options, 输入参数,用来指定编译时的一些选项
&error, // errptr, 输出参数,用来输出错误信息
&erroffset, // erroffset, 输出参数,pattern中出错位置的偏移量
NULL); // tableptr, 输入参数,用来指定字符表,一般情况用NULL
// 返回值:被编译好的正则表达式的pcre内部表示结构
if (re == NULL) { //如果编译失败,返回错误信息
printf("PCRE compilation failed at offset %d: %s\n", erroffset, error);
return 1;
}
rc = pcre_exec(re, // code, 输入参数,用pcre_compile编译好的正则表达结构的指针
NULL, // extra, 输入参数,用来向pcre_exec传一些额外的数据信息的结构的指针
src, // subject, 输入参数,要被用来匹配的字符串
strlen(src), // length, 输入参数, 要被用来匹配的字符串的指针
0, // startoffset, 输入参数,用来指定subject从什么位置开始被匹配的偏移量
0, // options, 输入参数, 用来指定匹配过程中的一些选项
ovector, // ovector, 输出参数,用来返回匹配位置偏移量的数组
OVECCOUNT); // ovecsize, 输入参数, 用来返回匹配位置偏移量的数组的最大大小
// 返回值:匹配成功返回非负数,没有匹配返回负数
if (rc < 0) { //如果没有匹配,返回错误信息
if (rc == PCRE_ERROR_NOMATCH) printf("Sorry, no match ...\n");
else printf("Matching error %d\n", rc);
pcre_free(re);
return 1;
}
printf("\nOK, has matched ...\n\n"); //没有出错,已经匹配
for (i = 0; i < rc; i++) { //分别取出捕获分组 $0整个正则公式 $1第一个()
char *substring_start = src + ovector[2*i];
int substring_length = ovector[2*i+1] - ovector[2*i];
printf("$%2d: %.*s\n", i, substring_length, substring_start);
}
pcre_free(re); // 编译正则表达式re 释放内存
return 0;
}
转载于:https://www.cnblogs.com/Leo-Forest/archive/2012/07/13/2590662.html
PCRE demo【转】相关推荐
- Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布
1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道. FastCGI程序 - 常驻型CGI程序,它是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将 ...
- php pcre回溯攻击,php preg_match pcre回溯绕过
原理 需要知识:正则NFA回溯原理,php的pcre.backtrack_limit设置. 正则NFA回溯原理 正则表达式是一个可以被"有限状态自动机"接受的语言类. " ...
- 【入门篇】Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布
http://blog.csdn.net/allenlinrui/article/details/19419721 分类: C/C++2014-02-18 17:58 3875人阅读 评论(0) 收藏 ...
- jquery autocomplete demo
根据用户输入值进行搜索和过滤,让用户快速找到并从预设值列表中选择. jquery.autocomplete参考地址 http://bassistance.de/jquery-plugins/jquer ...
- BERT-Pytorch demo初探
https://zhuanlan.zhihu.com/p/50773178 概述 本文基于 pytorch-pretrained-BERT(huggingface)版本的复现,探究如下几个问题: py ...
- MinkowskiEngine demo ModelNet40分类
MinkowskiEngine demo ModelNet40分类 本文将看一个简单的演示示例,该示例训练用于分类的3D卷积神经网络.输入是稀疏张量,卷积也定义在稀疏张量上.该网络是以下体系结构的扩展 ...
- Android - 下载别人的android demo 运行的时候加载很久问题处理
一般从git 下载别人的demo 的时候每次都要加载很久,下载gradle 版本之类的, 处理方法把 gradle 下面的 gradle-wrapper 里面的distributionUrl 替换自己 ...
- android studio导入第三方库和demo
导demo,导第三方库,都可以用这个方法,别想太复杂了, file - new - import module
- iOS蓝牙开发---CoreBluetooth[BLE 4.0] 初级篇[内附Demo地址]
一.蓝牙基础知识 (一)常见简称 1.MFI make for ipad ,iphone, itouch 专们为苹果设备制作的设备,开发使用ExternalAccessory 框架(认证流程貌似挺复 ...
- 【应用篇】Activiti外置表单实例demo(四)
在这里我想说的外置表单.是说我们将我们自己的jsp(.form,.html)等页面上传到工作流的数据库中,当任务运行到当前结点时.给我们像前台发送绑定好的表单. 此处是给表单绑定表单的过程 不允许为: ...
最新文章
- 随机投影(Random Projection)降维方法
- Linux学习总结(四十七)NFS服务配置 上篇
- 梯度消失问题学习资料整理
- python强大体现在哪些方面-大公司里哪些方面运用了python?
- python3 socketserver_Python3中的SocketServer
- html表格怎么设置浮动,html – 表格布局和浮动左和引导网格
- 50 家硅谷 IT 公司技术博客
- Single Image Haze Removal Using Dark Channel Prior(使用暗通道先验去除单张图像雾霾)
- java实现pdf转word
- Keil中如何生成bin文件
- oracle系统FA调整折旧年限,Oracle财务管理系统培训手册.doc
- 一种新型智慧停车场车位占用监测模块
- 计算机切换用户快捷键,电脑操作中如何快速切换用户?
- VC++课程设计常见问题解答
- https://juejin.im/entry/559f1d31e4b0876bf61e4d20
- nyoj1273 河南省第九届省赛_宣传墙、状压DP+矩阵幂加速
- 计算平均成绩和总成绩
- 前端基础知识总结---CSS篇
- Java毕业设计_基于BootStrap的晴雅花艺交流论坛的开发
- 杂谈---令人抓狂的数据库行级锁问题
热门文章
- bdm导入mysql_MySQL数据库导入教程
- 拓端tecdat|R语言推特twitter网络转发可视化分析
- 微信小程序教程笔记2
- pytorch加载自己的数据集图片格式
- ​​​​​​​(复制python包,产生的问题) pip Fatal error in launcher: Unable to create process using
- Tensorflow CUDA及CUDNN版本对应关系表查询
- 深度学习常用的数据集,包括各种数据跟图像数据
- 淘沙潜行,数一数英雄的多姿,王者荣耀英雄、皮肤、武器展览
- python日期转化利器arrow实践
- java实现动态规划求解给定矩阵的和最大的子数组(矩阵中数字正负均存在)