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进行分组模式匹配的实例相关推荐

  1. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

  2. python etree创建xml_利用 Python ElementTree 生成 xml的实例

    Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree. 首先 import 之: from xml.etree import Eleme ...

  3. 利用python随机生成姓名的实例教程

    本篇文章主要讲解:利用python随机生成姓名的实例教程 作者:任聪聪 整体思路 在我们生成姓名的时候,一般我们要考虑的是姓名的组合构成,姓+名,姓是固定的,名是随机的,故此我们可以通过随机调用常用汉 ...

  4. python打乱数据集_在Keras中利用np.random.shuffle()打乱数据集实例

    我就废话不多说了,大家还是直接看代码吧~ from numpy as np index=np.arange(2000) np.random.shuffle(index) print(index[0:2 ...

  5. python处理分组_Python中的groupby分组功能的实例代码

    pandas中的DataFrame中可以根据某个属性的同一值进行聚合分组,可以选单个属性,也可以选多个属性: 代码示例: import pandas as pd A=pd.DataFrame([['B ...

  6. python计算面积代码_利用Python求阴影部分的面积实例代码

    利用Python求阴影部分的面积实例代码 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  利用Python求阴影部分的面积实例代码.txt ] (友情提示:右键点 ...

  7. 老照片特效 php,PHP教程:php利用imagemagick实现复古老照片效果实例

    <PHP教程:php利用imagemagick实现复古老照片效果实例>要点: 本文介绍了PHP教程:php利用imagemagick实现复古老照片效果实例,希望对您有用.如果有疑问,可以联 ...

  8. python按模板生成html_python 利用jinja2模板生成html代码实例

    这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下from jinja2 imp ...

  9. mysql按年月排序group by升序_Mysql利用group by分组排序

    昨天有个需求对数据库的数据进行去重排名,同一用户去成绩最高,时间最短,参与活动最早的一条数据进行排序.我们可以利用MySQL中的group by的特性. MySQL的group by与Oracle有所 ...

最新文章

  1. 霍夫变换(Hough Transform):霍夫变化在图像处理以及点云处理中的直线检测应用
  2. ICML 2021论文数据分析:谷歌第一,国内北大论文最多
  3. 6.2 K-Means 算法步骤-机器学习笔记-斯坦福吴恩达教授
  4. 《终于有人说出来了——Java不适合于作为主要编程教学语言》我的看法
  5. js遍历多层嵌套对象存在的JSO数据
  6. apk 签名v1与v2的区别
  7. K2新网站(官网和BPM社区)正式上线了
  8. jquery 获取键值对中最大值_jQuery的AJAX发送数据键值对
  9. Objective-C基础3:内存管理续
  10. hdu 3631 Shortest Path(Floyd)
  11. Android通知栏Notification弹出横幅显示的解决方法
  12. 学生网站模板——我的家乡-云南(9页) HTML+CSS+JavaScript 关于我的家乡的HTML网页设计-----云南
  13. 快速给视频批量添加水印,操作简单
  14. 一步一个脚印——开启博客
  15. 基于Java实现的迷宫小游戏
  16. sim卡iccid编辑软件_5G超级SIM卡 能握在自己手中的 才是最安全的
  17. Unity实现瞄准镜效果
  18. Python_爬虫_猫眼电影网电影预告片批量下载
  19. ubuntu快捷键备忘
  20. java计算机毕业设计冠军体育用品购物网站MyBatis+系统+LW文档+源码+调试部署

热门文章

  1. 用js方法做提交表单的校验
  2. 2022-2028年中国安防视频行业市场前景分析预测报告
  3. 2022-2028年中国钢丸行业市场行情监测及未来前景规划报告
  4. 2022-2028年中国微滤膜行业市场发展调研及投资前景分析报告
  5. 2022-2028年中国钽酸锂单晶行业市场调查分析及投资发展潜力报告
  6. 利用pandas读写HDF5文件
  7. G6实现标签拖动连线画流程图
  8. LeetCode简单题之位1的个数
  9. TensorFlow反向传播算法实现
  10. H.265 HD 和H.265 4K Video Encoder IP Core