正则表达式用于从字符串缓存区里搜索是否有满足条件的字符段落(可以无、有1个,多个等等情况)。
java/python/c都有开发接口。

基本套路都是:
[1]正则模式编译:
后面匹配时可以直接使用,加快效率;

  int regcomp(regex_t *compiled, const char *pattern, int cflags);

【2】匹配:

int regexec (regex_t *compiled, char *string, size_t nmatch, regmatch_t matchptr [], int eflags)

注意:如果要看是否输入的string完整匹配正则,需要看matchptr内的字符区间是否涵盖了整个字符串长度。

【3】使用完毕释放:

void regfree (regex_t *compiled)

【4】错误信息查询:

  size_t regerror (int errcode, regex_t *compiled, char *buffer, size_t length)

简单示例:在这里插入代码片

#include<stdio.h>
#include<sys/types.h>
#include<regex.h>
#include <string.h>void print_match(regmatch_t * pmatch, char * buf)
{int i;for(i=pmatch->rm_so;i<pmatch->rm_eo;++i){putchar(buf[i]);}putchar('\n');
}int reg_match(regex_t* pattern,char* buf){regmatch_t pmatch[1];const size_t nmatch=1;//执行正则表达式和缓存的比较int status=regexec(pattern, buf, nmatch, pmatch, 0);if(status==REG_NOMATCH)printf("No match!\n");else if(0 == status){int length = pmatch[0].rm_eo - pmatch[0].rm_so;if(length == strlen(buf)){printf(" %s 完全匹配成功!==> ", buf);}else{printf(" %s 部分匹配成功 ***> ", buf);}//打印匹配的字符串print_match(&pmatch[0], buf);}return status;
}int main(){regex_t  regFileName;//编译正则模式int rc = regcomp(&regFileName, "[0-9A-Za-z_\\.-]+", REG_EXTENDED) ;if(0 == rc){reg_match(&regFileName, "abc.name");reg_match(&regFileName, "ab11c.name");reg_match(&regFileName, "abc22.name");reg_match(&regFileName, "abc.33");reg_match(&regFileName, "abc.--33");reg_match(&regFileName, "abc.-33.aa.c");reg_match(&regFileName, "abc.,-33.aa.c");reg_match(&regFileName, "abc--__.33");reg_match(&regFileName, "abc-@__.33");reg_match(&regFileName, "abc-#__.33");reg_match(&regFileName, "abc-343~__.33");regfree(&regFileName);}else{printf("reg compiled errror\n");char errBuf[1024];regerror(rc, &regFileName, errBuf, 1024);printf("reg error: %s\n", errBuf);}return 0;
}

【C语言正则表达式】一个示例相关推荐

  1. c语言正则表达式函数与示例

    C语言正则表达式概述 C语言中处理正则表达式的函数有regcomp().regexec().regfree()和regerror()等. regcomp()函数 编译正则表达式. int regcom ...

  2. java正则表达式用法示例_Java正则表达式教程及示例

    java正则表达式用法示例 当我开始使用Java时,正则表达式对我来说是一场噩梦. 本教程旨在帮助您掌握Java正则表达式,并让我定期返回以刷新我的正则表达式学习. 什么是正则表达式? 正则表达式定义 ...

  3. r语言正则表达式_R中的正则表达式

    r语言正则表达式 Regular expressions in R or a regex are a sequence of special characters that are defined t ...

  4. go 变量在其中一个函数中赋值 另一个函数_go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包...

    本篇文章是 Go 语言学习笔记之函数式编程系列文章的第二篇,上一篇介绍了函数基础,这一篇文章重点介绍函数的重要应用之一: 闭包 空谈误国,实干兴邦,以具体代码示例为基础讲解什么是闭包以及为什么需要闭包 ...

  5. python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...

    导航:网站首页 > C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值.,C语言 编写一个程序,输入一个正整数,求出它是几位数. C语言编写程序:输入一个正整数x和一个正整数n,求下 ...

  6. c语言受到哪些编程的影响,C语言,一个影响了整个世界的编程语言!

    Dennis Ritchie 过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言.一门经历40多年的到今天还长盛不衰的语言,今天很多语言都受到C的影响,C++,Java,C#,Perl, ...

  7. 如何用 Swift 语言构建一个自定控件

    本文译自:How To Make a Custom Control in Swift 用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它们与应用程序进行交互. ...

  8. c语言给定一个非空整数数组_C程序检查给定整数的所有位是否为一(1)

    c语言给定一个非空整数数组 Problem statement: Write a C Program to check if all the bits of a given integer is on ...

  9. mysql复杂查询示例_找到时间和内存复杂性之间的平衡-一个示例

    mysql复杂查询示例 by Anmol Uppal 通过Anmol Uppal 找到时间和内存复杂性之间的平衡-一个示例 (Finding the balance between time and ...

  10. go 正则表达式分组匹配_Go语言正则表达式用法实例小结【查找、匹配、替换等】...

    本文实例讲述了Go语言正则表达式用法.分享给大家供大家参考,具体如下: Go语言的正则表达式使用很简单,示例代码: 复制代码 代码如下: package test import ( "fmt ...

最新文章

  1. java微信oppo,OPPO实现全球首次5G微信视频通话,国产手机满分操作
  2. WSS2.0升级到WSS3.0
  3. php smtp tls,php – RoundcubePostfix SMTP:SSL例程:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c...
  4. 引入antd组件样式_如何使用 dumi 和 fatherbuild 创建组件库
  5. java卡片布局源码_Java编程使用卡片布局管理器示例【基于swing组件】
  6. 在Linux服务器之间迁移帐号信息
  7. 论文浅尝 | 知识库问答中关系检测的学习表示映射
  8. java中菜单不显示_菜单不显示
  9. linux命令行sip电话,基于嵌入式Linux和MiniGUI的SIP电话设计
  10. Map集合之HashMap
  11. 关于arcview 3.2 中输出图形添加坐标网格(Graticules and Measured Grids)时直接退出的问题...
  12. 对抗 | 利用de4dot解密被混淆的.NET代码
  13. 如何安装树莓派鱼眼摄像头模块
  14. next.js页面跳转
  15. 2020-1024=996(程序员节)
  16. H5 +蓝牙打印机 CPCL和ESC
  17. Three.js加载外部模型骨骼动画
  18. 工程流体力学笔记暂记8(伯努利方程的推导)
  19. 【Shiro】shiro的Session管理
  20. 数据赋能:Uber的数据治理实践分享

热门文章

  1. eis电子防抖好还是光学防抖好_OPPO视频超级防抖融合OIS、EIS两大技术,好在哪里?...
  2. 选股秘诀:如何选中次日大涨股
  3. 矩阵分解之: 特征值分解(EVD)、奇异值分解(SVD)、SVD++
  4. 物联网学习笔记一(物联网的基本认识和应用)
  5. 浏览器演变史 详评1991年以来的浏览器
  6. 【C++】STL中 list 反向迭代器的模拟实现
  7. 华为交换机开启 DAI功能
  8. [创业之路-55] :总经理与CEO的区别?技术副总VP和首席技术官CTO的区别?
  9. 精准农业中自主微型无人机面临的挑战与机遇
  10. 什么是营销自动化工具?简单的营销自动化流程如何设计?