利用cre2进行分组模式匹配的实例
code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cre2.h>int init_ptn(const char *str_ptn, cre2_regexp_t **pPtn)
{// 初始化cre2的正则表达式cre2_options_t* opt;opt = cre2_opt_new();//cre2_opt_set_posix_syntax(opt, 1);cre2_opt_set_perl_classes(opt, 1);cre2_opt_set_one_line(opt, 1);// cre2_opt_set_literal(opt, 1);cre2_opt_set_longest_match(opt, 1);*pPtn = cre2_new(str_ptn, strlen(str_ptn), opt);if (cre2_error_code(*pPtn)){fprintf(stderr, "cre2_new error\n");return -1;}return 0;
}int main(int argv, char* argc[])
{cre2_regexp_t * rex = NULL;const char * pattern = "^(?P<SRC>.+?)(?P<CMD>修改为|修改成|改为|改成|换成|变成|替换成|替成|替换为|换为|更替为)(?P<DEST>.+)$";const char * text = "你好修改为不好";init_ptn(pattern, &rex);cre2_string_t input = {.data = text,.length = strlen(text)};int nmatch = cre2_num_capturing_groups(rex) + 1;;printf("nmatch is %d\n", nmatch);cre2_string_t match[nmatch];memset(match, '\0', nmatch * sizeof(cre2_string_t));int e, src_index, cmd_index, dest_index;e = cre2_match(rex, text, strlen(text), 0, strlen(text), CRE2_UNANCHORED, match, nmatch);printf("e is %d\n", e);if (e != 1){printf("match error\n");}src_index = cre2_find_named_capturing_groups(rex, "SRC");printf("src_index is %d\n", src_index);printf("src is %.*s\n", match[src_index].length, match[src_index].data);cmd_index = cre2_find_named_capturing_groups(rex, "CMD");printf("cmd_index is %d\n", cmd_index);printf("cmd is %.*s\n", match[cmd_index].length, match[cmd_index].data);dest_index = cre2_find_named_capturing_groups(rex, "DEST");printf("dest_index is %d\n", dest_index);printf("dest is %.*s\n", match[dest_index].length, match[dest_index].data);cre2_delete(rex);return 0;
}
res
nmatch is 4
e is 1
src_index is 1
src is 你好
cmd_index is 2
cmd is 修改为
dest_index is 3
dest is 不好
利用cre2进行分组模式匹配的实例相关推荐
- python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...
- python etree创建xml_利用 Python ElementTree 生成 xml的实例
Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree. 首先 import 之: from xml.etree import Eleme ...
- 利用python随机生成姓名的实例教程
本篇文章主要讲解:利用python随机生成姓名的实例教程 作者:任聪聪 整体思路 在我们生成姓名的时候,一般我们要考虑的是姓名的组合构成,姓+名,姓是固定的,名是随机的,故此我们可以通过随机调用常用汉 ...
- python打乱数据集_在Keras中利用np.random.shuffle()打乱数据集实例
我就废话不多说了,大家还是直接看代码吧~ from numpy as np index=np.arange(2000) np.random.shuffle(index) print(index[0:2 ...
- python处理分组_Python中的groupby分组功能的实例代码
pandas中的DataFrame中可以根据某个属性的同一值进行聚合分组,可以选单个属性,也可以选多个属性: 代码示例: import pandas as pd A=pd.DataFrame([['B ...
- python计算面积代码_利用Python求阴影部分的面积实例代码
利用Python求阴影部分的面积实例代码 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 利用Python求阴影部分的面积实例代码.txt ] (友情提示:右键点 ...
- 老照片特效 php,PHP教程:php利用imagemagick实现复古老照片效果实例
<PHP教程:php利用imagemagick实现复古老照片效果实例>要点: 本文介绍了PHP教程:php利用imagemagick实现复古老照片效果实例,希望对您有用.如果有疑问,可以联 ...
- python按模板生成html_python 利用jinja2模板生成html代码实例
这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下from jinja2 imp ...
- mysql按年月排序group by升序_Mysql利用group by分组排序
昨天有个需求对数据库的数据进行去重排名,同一用户去成绩最高,时间最短,参与活动最早的一条数据进行排序.我们可以利用MySQL中的group by的特性. MySQL的group by与Oracle有所 ...
最新文章
- 霍夫变换(Hough Transform):霍夫变化在图像处理以及点云处理中的直线检测应用
- ICML 2021论文数据分析:谷歌第一,国内北大论文最多
- 6.2 K-Means 算法步骤-机器学习笔记-斯坦福吴恩达教授
- 《终于有人说出来了——Java不适合于作为主要编程教学语言》我的看法
- js遍历多层嵌套对象存在的JSO数据
- apk 签名v1与v2的区别
- K2新网站(官网和BPM社区)正式上线了
- jquery 获取键值对中最大值_jQuery的AJAX发送数据键值对
- Objective-C基础3:内存管理续
- hdu 3631 Shortest Path(Floyd)
- Android通知栏Notification弹出横幅显示的解决方法
- 学生网站模板——我的家乡-云南(9页) HTML+CSS+JavaScript 关于我的家乡的HTML网页设计-----云南
- 快速给视频批量添加水印,操作简单
- 一步一个脚印——开启博客
- 基于Java实现的迷宫小游戏
- sim卡iccid编辑软件_5G超级SIM卡 能握在自己手中的 才是最安全的
- Unity实现瞄准镜效果
- Python_爬虫_猫眼电影网电影预告片批量下载
- ubuntu快捷键备忘
- java计算机毕业设计冠军体育用品购物网站MyBatis+系统+LW文档+源码+调试部署