【C语言正则表达式】一个示例
正则表达式用于从字符串缓存区里搜索是否有满足条件的字符段落(可以无、有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(®FileName, "[0-9A-Za-z_\\.-]+", REG_EXTENDED) ;if(0 == rc){reg_match(®FileName, "abc.name");reg_match(®FileName, "ab11c.name");reg_match(®FileName, "abc22.name");reg_match(®FileName, "abc.33");reg_match(®FileName, "abc.--33");reg_match(®FileName, "abc.-33.aa.c");reg_match(®FileName, "abc.,-33.aa.c");reg_match(®FileName, "abc--__.33");reg_match(®FileName, "abc-@__.33");reg_match(®FileName, "abc-#__.33");reg_match(®FileName, "abc-343~__.33");regfree(®FileName);}else{printf("reg compiled errror\n");char errBuf[1024];regerror(rc, ®FileName, errBuf, 1024);printf("reg error: %s\n", errBuf);}return 0;
}
【C语言正则表达式】一个示例相关推荐
- c语言正则表达式函数与示例
C语言正则表达式概述 C语言中处理正则表达式的函数有regcomp().regexec().regfree()和regerror()等. regcomp()函数 编译正则表达式. int regcom ...
- java正则表达式用法示例_Java正则表达式教程及示例
java正则表达式用法示例 当我开始使用Java时,正则表达式对我来说是一场噩梦. 本教程旨在帮助您掌握Java正则表达式,并让我定期返回以刷新我的正则表达式学习. 什么是正则表达式? 正则表达式定义 ...
- r语言正则表达式_R中的正则表达式
r语言正则表达式 Regular expressions in R or a regex are a sequence of special characters that are defined t ...
- go 变量在其中一个函数中赋值 另一个函数_go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包...
本篇文章是 Go 语言学习笔记之函数式编程系列文章的第二篇,上一篇介绍了函数基础,这一篇文章重点介绍函数的重要应用之一: 闭包 空谈误国,实干兴邦,以具体代码示例为基础讲解什么是闭包以及为什么需要闭包 ...
- python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...
导航:网站首页 > C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值.,C语言 编写一个程序,输入一个正整数,求出它是几位数. C语言编写程序:输入一个正整数x和一个正整数n,求下 ...
- c语言受到哪些编程的影响,C语言,一个影响了整个世界的编程语言!
Dennis Ritchie 过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言.一门经历40多年的到今天还长盛不衰的语言,今天很多语言都受到C的影响,C++,Java,C#,Perl, ...
- 如何用 Swift 语言构建一个自定控件
本文译自:How To Make a Custom Control in Swift 用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它们与应用程序进行交互. ...
- c语言给定一个非空整数数组_C程序检查给定整数的所有位是否为一(1)
c语言给定一个非空整数数组 Problem statement: Write a C Program to check if all the bits of a given integer is on ...
- mysql复杂查询示例_找到时间和内存复杂性之间的平衡-一个示例
mysql复杂查询示例 by Anmol Uppal 通过Anmol Uppal 找到时间和内存复杂性之间的平衡-一个示例 (Finding the balance between time and ...
- go 正则表达式分组匹配_Go语言正则表达式用法实例小结【查找、匹配、替换等】...
本文实例讲述了Go语言正则表达式用法.分享给大家供大家参考,具体如下: Go语言的正则表达式使用很简单,示例代码: 复制代码 代码如下: package test import ( "fmt ...
最新文章
- java微信oppo,OPPO实现全球首次5G微信视频通话,国产手机满分操作
- WSS2.0升级到WSS3.0
- php smtp tls,php – RoundcubePostfix SMTP:SSL例程:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c...
- 引入antd组件样式_如何使用 dumi 和 fatherbuild 创建组件库
- java卡片布局源码_Java编程使用卡片布局管理器示例【基于swing组件】
- 在Linux服务器之间迁移帐号信息
- 论文浅尝 | 知识库问答中关系检测的学习表示映射
- java中菜单不显示_菜单不显示
- linux命令行sip电话,基于嵌入式Linux和MiniGUI的SIP电话设计
- Map集合之HashMap
- 关于arcview 3.2 中输出图形添加坐标网格(Graticules and Measured Grids)时直接退出的问题...
- 对抗 | 利用de4dot解密被混淆的.NET代码
- 如何安装树莓派鱼眼摄像头模块
- next.js页面跳转
- 2020-1024=996(程序员节)
- H5 +蓝牙打印机 CPCL和ESC
- Three.js加载外部模型骨骼动画
- 工程流体力学笔记暂记8(伯努利方程的推导)
- 【Shiro】shiro的Session管理
- 数据赋能:Uber的数据治理实践分享
热门文章
- eis电子防抖好还是光学防抖好_OPPO视频超级防抖融合OIS、EIS两大技术,好在哪里?...
- 选股秘诀:如何选中次日大涨股
- 矩阵分解之: 特征值分解(EVD)、奇异值分解(SVD)、SVD++
- 物联网学习笔记一(物联网的基本认识和应用)
- 浏览器演变史 详评1991年以来的浏览器
- 【C++】STL中 list 反向迭代器的模拟实现
- 华为交换机开启 DAI功能
- [创业之路-55] :总经理与CEO的区别?技术副总VP和首席技术官CTO的区别?
- 精准农业中自主微型无人机面临的挑战与机遇
- 什么是营销自动化工具?简单的营销自动化流程如何设计?