正则匹配---C语言实现

C语言正则表达式使用详解 正则表达式是编程技术中比较复杂的一个,掌握起来相对困难,但在数据检索等到高级编程中又几乎离不开。本文非常详细地介绍了c语言正则表达式的各种用法。 立即下载

实现一个能匹配, ^ ,* ,. ,$ ,的正则表达式

/*************************************************************************
    > File Name: mathRE.c
    > Author: guoqingyao
    > Mail: stepbystepto@163.com 
    > Created Time: 2016年08月24日 星期三 21时28分15秒
 ************************************************************************/

#include<stdio.h>

#define MATCH 1
#define NOT_MATCH 0

int matchReHere(char *pcText ,char *pcRe) ;
int  matchReStar(char* pcText,char cPreStar,char *pcEndStar );

int  matchReStar(char* pcText,char cPreStar,char *pcEndStar )
{
   do
   {
       if( MATCH == matchReHere(pcText,pcEndStar) )
       {
           return MATCH;
       }
   }while ( ('\0' != pcText) && ('.' == cPreStar || cPreStar == *pcText++) );

   return  NOT_MATCH;

}

int matchReHere(char *pcText ,char *pcRe)
{
    /*一定要先判断 pcRe 是否结束,否则判断后一个是否为* 和 $ 就会越界*/
    if( '\0' == pcRe[0] )
    {
        return MATCH;
    }
    /*判断后一个是否为* 判断结束一定要在前面否则会越界 */
    if( '*' == pcRe[1] )
    {
        return matchReStar(pcText,pcRe[0],pcRe+2); /*当前字符是 pcRe[0] ,偏移一个是* 偏移到下一个才是*后面的字符 */
    }
    /* $结尾匹配 */
    if( '$' == pcRe[0] && '\0'==pcRe[1] )
    {
        if( '\0' == *pcText )
        {
            return MATCH;
        }
        else
        {
            return  NOT_MATCH;
        }
    }
    /*. 或者相等的情况*/
    if( ( '\0' != pcText)  && 
        ( ( '.' ==pcRe[0]) || ( *pcText == *pcRe) ) 
      )
    {
        return matchReHere(pcText+1,pcRe+1);
    }

    return  0;
}

int procMatchReEnter(char *pcText,char *pcRe)
{
   if(NULL == pcText  || NULL == pcRe )
   {
        return NOT_MATCH;
   }
   /*如果匹配第一个字符为 ^ ,直接向后匹配 */
   if( '^' == pcRe[0] )
   {
       return matchReHere(pcText,pcRe+1) ; // +1 越过 ^
   }

   do
   {
       if( MATCH == matchReHere(pcText,pcRe) )
       {
           return  MATCH;
       }
   }while( *pcText++ !='\0');

   return NOT_MATCH ;
}


int main()
{
    char *pcText = "zoooogss";
    char *pcRe = "^zo*gss$";
    if( MATCH == procMatchReEnter(pcText, pcRe))
    {
        printf("text =%s \r\n re =%s\r\n Matched\r\n",pcText ,pcRe);
    }
    else
    {
        printf("text =%s \r\n re =%s\r\n not Matched\r\n",pcText,pcRe);
    }
    return 0;
}
C语言中的正则表达式使用示例详解 正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。本文通过示例代码给大家介绍了C语言中的正则表达式使用,感兴趣的朋友跟随小编一起看看吧 立即下载

相关推荐

【学习笔记】人群归因分数 PAF 以及combined PAF

人群归因风险比例(Population Attributable Fraction,PAF)是一个流行病学指标,它估计了在总体中,如果能消除一个特定的危险因素,能预防多少百分比的疾病或健康结果。简单来说,PAF回答的是:“如果没有这个风险因素,总体中会有多少病例是可以避免的?

weixin_53499537的博客 4897

c语言中的正则表达式

正则表达式C语言,省流直接看元字符部分既可

weixin_45591968的博客 3295

脑机接口最新发展动态报告 (2024-2025)

脑机接口动态

高山 4105

C语言中使用正则表达式

POSIX 规定了正则表达式的C语言库函数, 参见regex(3), 我们已经学了很多C函数得用法 读者应该具备自己看懂man手册得能力 C语言中使用正则表达式一般分为三部: 1.编译正则表达式regcomp() 2.匹配正则表达式 regexec() 3.释放正则表达式 regfree() 先来通过一个demo展示一下这三个函数的用法 #include <cstdio> #include <sys/types.h> #include <regex.h> .

qq_44065088的博客 9119

3 种 VLA 模型动作表示方案对比:RT-2 离散化 vs π0 流匹配 vs HybridVLA 混合架构

本文深入对比了三种VLA模型动作表示方案:RT-2离散化、π0流匹配和HybridVLA混合架构。分析了各自的技术原理、优势与局限性,并提供了应用场景选择指南,帮助研究者在具身智能领域做出更优的技术选型决策。

weixin_29031161的博客 318

吊打原版YOLOv8!ASF-YOLO多尺度融合+注意力机制实战解析(遥感/医疗/质检均适用)

ASF-YOLO融合YOLOv8的创新目标检测框架摘要 ASF-YOLO是针对小目标检测优化的先进框架,采用三重特征编码器和尺度序列融合技术增强多尺度特征提取能力。核心创新包括: 三重特征编码器(TPE)融合跨层级信息 尺度序列特征融合(SSFF)模块通过3D卷积处理多尺度信息 通道-位置注意力机制(CPAM)聚焦关键特征区域 Zoom_cat模块实现自适应多尺度特征融合 该框架特别适用于医学影像、遥感检测等小目标密集场景,通过动态特征权重调整显著提升检测精度。关键技术实现包含多尺度特征统一、3D卷积序列处

FJN110的博客 526

正则表达式详解及C语言中的正则表达式函数

正则表达式详解及C语言中的正则表达式函数

深耕嵌入式领用多年, 致力于分享嵌入式领域技术! 8210

把 MANDT 锁进保险箱:ABAP Client Handling 与 Client Isolation(聚焦 AMDP 的 Client Safety )

本文探讨了ABAP系统中Client Handling与Client Isolation机制的演进,重点分析了AMDP环境下多租户隔离的风险与解决方案。传统ABAP SQL/CDS通过隐式Client过滤提供安全保障,而AMDP因其原生SQLScript特性容易绕过隔离机制。文章对比了旧时代依赖开发自觉的传参方式与新时代通过AMDP OPTIONS强约束的语法方案,详细介绍了CLIENT INDEPENDENT和CDS SESSION CLIENT DEPENDENT两种编译期安全机制,阐述了USING列表

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 337

C语言----正则表达式匹配

详细思路在代码的每行代码中都有注释 /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @param pattern string字符串 * @return bool布尔型 */ #include <stdbool.h> bool core(char* str, char* pattern) { if(str[0] == 0 && pattern[0] ==...

ftzchina的博客 1999

SAP ABAP CDS View 里的日期函数

摘要:本文系统介绍了ABAP CDS日期函数在企业级应用中的关键作用,包括账龄计算、合同续期等业务场景。重点解析了DATS_IS_VALID、DATS_DAYS_BETWEEN等核心函数的语义和使用边界,特别强调on_error四种异常处理策略的选择逻辑。针对系统日期获取,对比了经典CDS的参数注入和View Entity会话变量两种方式。文章还提供了完整可运行的示例代码(包含CDS视图和ABAP程序),帮助开发者快速验证不同版本下的函数行为差异,确保在实际项目中正确应用这些日期处理函数。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 376

Android 车联网——CarAudioService介绍(六)

CarAudioService 是 Android Automotive OS 中的一个重要组件,用于管理车辆中的音频功能。它是 Android Auto 的一部分,负责处理车辆音频的播放、控制和路由。CarAudioService 使用标准的 Android 组件架构,基于 Binder 通信机制,提供了一组 API,用于管理车辆音频。它包括以下主要功能:音频路由管理:CarAudioService 可以让开发者控制音频的路由,即将音频发送到不同的输出设备,例如车辆的扬声器、耳机等。

小旭的专栏 3199

Bash Shell中的$0/$?/$*/$@的含义

$0就是该bash文件名 $?是上一指令的返回值 $*所有位置参数的内容:就是调用调用本bash shell的参数。 $@基本上与上面相同。只不过是: “$*”返回的是一个字符串,字符串中存在多外空格。 “$@”返回多个字符串。

山不在高,有金则名 1423

第3.2.1章 Eigen代码实战:四元数赋值用法总结及与变换矩阵转换

Eigen库中四元数(Quaternion)的赋值方法解析:Quaterniond和Quaternion<double>本质相同,但Quaterniond是更简洁的别名。主要赋值方式包括直接构造(w,x,y,z分量、旋转矩阵或轴角)、赋值运算符和成员函数赋值。使用时需注意参数顺序、归一化处理和头文件包含,常见错误包括模板参数缺失和构造顺序错误。四元数广泛应用于旋转矩阵转换、姿态组合等场景,合理选择赋值方式能提高代码可读性和正确性。

行知SLAM 586

用C语言实现正则表达式匹配器

《代码之美》读书笔记 源码出自《The Practice of Programming》一书的第9章 用来处理以下模型 字符 含义 .(句点) 匹配任意的单个字符 ^ 匹配输入字符串的开头 $ 匹配输入字符串的结尾 * 匹配前一个字符的零个或者多个出现/* match: search for regexp anywhere in text

wrc的专栏 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c语言正则表达式查找字符串长度,c语言实现正则表达式匹配

正则表达式教程网站https://www.jb51.net/tools/zhengze.html#introductionC语言处理正则表达式的函数regcomp()、regexec()、regfree()和regerror()C语言中使用正则表达式一般分为三步:编译正则表达式regcomp()匹配正则表达式regexec()释放正则表达式regfree()函数说明头文件#include#incl...

weixin_36378683的博客 537

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【练习记录】C语言实现正则表达式匹配

一、题目描述 传入一个字符串 s 和一个字符规律 p,实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 字符’.‘的含义 :匹配任意单个字符 字符’*'的含义: 匹配零个或多个前面的那一个元素 注意:匹配是指涵盖整个字符串s,而不是部分字符串。 示例1: 输入:s = "aa" p = "a" 输出:false 解释:"a" 无法匹配 "aa" 整个字符串。 示例2: 输入:s = "aa" p = "a*" 输出:true 解释:'*' 代表可以匹配零个或多个前面的那个元素, 此处为 'a',因

Rain_Mic的博客 951

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PHP正则匹配C语言源码,正则表达式(regex)及C语言实现,超强查找/匹配/替换算法...

DOS/Windows的文件名通配符,比如:*.txt,我们可能很熟悉。介绍一个更强的—正则表达式。一、正则表达式正则表达式(regular expression,或简称regex ),是一种字符串查找的语言,一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。举几个例子吧:正则表达式 “r.t”,其中 . 表示任意一个字符(如同DOS的通配符 ?) ,可以在字符串 “rat rot rpt...

weixin_31227315的博客 382

C语言单栈实现正则匹配算法 [leetcode击败率100%]

算法流程 首先将正则字符串进行栈转换处理 栈格式: 成员名 singleChar type loc_s front 类型 char int int struct* 说明 单个字符内容(.或24个英文字母) 当匹配数量为*(任意时),为0;否则为重复个数 匹配位置(在转换到匹配栈中使用) 前一个栈胞 该栈pSta...

qq_39271382的博客 265

正则表达式(regex)及C语言实现,超强查找/匹配/替换算法

 DOS/Windows的文件名通配符,比如:*.txt,我们可能很熟悉。介绍一个更强的---正则表达式。 一、正则表达式正则表达式(regular expression,或简称regex ),是一种字符串查找的语言,一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。举几个例子吧:   正则表达式 "r.t",其中 . 表示任意一个字符(如同DOS的通配符 ?) ,可以在字

JoStudio 1万+

PHP正则匹配C语言源码,php模板函数 正则实现代码

有些空闲,就弄了下template函数,比较粗糙。主要是利用正则表达式,把模板文件(html文件)转换成php文件,从而实现前后台分离,即是所谓的mvc思想了我看过phpcms、discuz的源码,所以可能就缺乏创新了,不过原理大都相通,只是细节处理可能稍微不同。说正题,下面开始谈谈具体实现过程了。1.首先要想好模板文件放在哪?转换后的php文件放哪?还有怎么命名?直接上源码:function t...

weixin_39830688的博客 158

【leetcode C语言实现】剑指 Offer 19. 正则表达式匹配

题目描述 请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。 示例 1: 输入: s = “aa” p = “a” 输出: false 解释: “a” 无法匹配 “aa” 整个字符串。 示例 2: 输入: s = “aa” p = “a*” 输出: true 解释: 因为 ‘

sunshine_hanxx的博客 372

《C 语言实现增强版 cat:支持正则表达式匹配与内容高亮显示》

此增强版cat工具结合正则表达式匹配和内容高亮,显著提升文件浏览体验。实现基于标准 C 库,代码简洁高效。用户可扩展功能如多文件支持或自定义高亮颜色。通过逐步测试和优化,确保可靠性。

2501_93876704的博客 339

C语言之实现正则1

利用C语言实现正则表达式1 此正则表达式只包括‘?’和‘*’ 正则的匹配规则:     '?' 可以匹配任意单字符     '*' 可以匹配任意数的任意字符     例:         src = abceeeeeefwgwfwehg         re = ab*ehg         匹配成功         src = abceeeeeefwgwfwehg         re ...

weixin_38825407的博客 326

C语言正则表达式的匹配问题

题目: C语言正则表达式详解 regcomp() regexec() regfree()详解。 背景: 标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。 实现步骤: C语言中使用正则表达式一般

ljp1919的专栏 9089

正则表达式与自动机c语言,用有限自动机实现正则表达式的匹配

问题:在主串中查找是否存在正则表达式为 abc*d?e 的匹配,下面用有限自动机的方法查找,该正则表达式的最简 DFA 如下状态转换表如下图所示程序中用二维数组定义如下#define STATES_NUMBER5#define LETTER_NUMBER5// 表示 abc*d?e 的最简 DFA 的状态转换表(-1表示不接受)int trans_table[STATES_NUMBER][LETT...

weixin_36479263的博客 564

正则表达式匹配 剑指offer

请实现一个函数用来匹配包含'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。

ljy的博客 213
上一篇: C语言中 sscanf()的用法
下一篇: JavaScript学习笔记
do-the-right
博客等级 码龄15年 16粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值