`
tcspecial
  • 浏览: 913919 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

linux C正则表达式

阅读更多

    标准c/c++不支持正则表达式,但linux下内置正则表达式处理,相对java的Pattern而言,处理比较繁琐。

 

#include <regex.h>

/**
 *@brief 正则表达式测试
 */
void reg_test()
{
	const char *name = "jmA1234kettas";
    const char *pattern = "^jm[A-Z][0-9]{1,}(.*)";

    regex_t reg;
    regmatch_t pmatch[5];

    int ret = regcomp(&reg,pattern,REG_EXTENDED);  // 编译正则表达式,为reg分配内存
    assert(ret==0);

    ret = regexec(&reg,name,5,pmatch,0);  // 匹配正则表达式
    if(ret == 0)
    {
    	printf("Match\n");

    	// 提取组信息,i从1开始 
    	for(int i=1;i<5&&pmatch[i].rm_so!=-1;i++)
        {
        	char buff[200];
        	memset(buff,'\0',200);

        	int len = pmatch[i].rm_eo - pmatch[i].rm_so;  // 匹配长度
        	strncpy(buff,name+pmatch[i].rm_so,len);
        	printf("buff:%s\n",buff);  // 显示kettas
        }
    }else if(ret == REG_NOMATCH)
    {
    	printf("No match\n");
    }else 
    {
    	char err[100];
    	regerror(ret,&reg,err,100); // 打印错误
    	printf("error:%s\n",err);
    }

    regfree(&reg);  // 释放内存,重复使用regcomp()时,一定要调用regfree(),防止内存漏洞
}

 

    当前Linux(2.6.32)上内置的正则表达式功能比较弱,很多语法不支持,不支持懒惰模式, 位置指定。\d也不支持,只能用[0-9]代替。

 

 

 

分享到:
评论

相关推荐

    Linux下的C语言正则表达式

    ### Linux下的C语言正则表达式使用详解 #### 引言 正则表达式作为一种强大的文本处理工具,广泛应用于各种编程语言中。对于C语言来说,尽管标准库并不直接支持正则表达式的操作,但可以通过引入第三方库来实现这一...

    Linux C Regex正则表达式 库

    这里的"Linux C Regex正则表达式库"是一个专门为C语言开发的库,用于实现正则表达式的编译、匹配和操作功能。这个库经过修改后,也支持在Android平台下的C++应用中调用,拓展了其跨平台的适用性。 正则表达式...

    Linux中几个正则表达式的用法.doc

    在Linux系统中,正则表达式(Regular Expression)是一种强大的文本处理工具,它能通过预定义的模式匹配和处理文本数据。以下将详细介绍文件标题和描述中涉及的几个Linux正则表达式用法: 1. **查找IPv4地址**: ...

    Linux在合集中使用正则表达式来匹配查找.zip

    在Linux系统中,正则表达式(Regular Expression)是一种强大的文本处理工具,它能用于匹配、查找、替换等操作,广泛应用于数据提取、文件搜索、脚本编程等多个领域。本合集主要围绕如何在Linux环境下利用正则表达式...

    最小的C++正则表达式库

    《最小的C++正则表达式库:高效与便携性的完美融合》 在软件开发领域,正则表达式作为一种强大的文本处理工具,被广泛应用于数据验证、文本搜索和替换等场景。对于C++程序员来说,找到一个轻量级、跨平台且功能强大...

    如安在C语言中巧用正则表达式(linux).docx

    "C语言中巧用正则表达式(linux)" 正则表达式是一种强大的字符串处理工具,在 Linux 中广泛应用于 sed、awk、grep、vi 等实用工具中。作为 C 语言程序员,如果熟悉 Linux 下的 sed、awk、grep 或 vi,那么对正则...

    C语言写的正则表达式

    linux下 用C语言 写的正则表达式

    linux下的C语言POSIX正则表达式头文件和源文件: regex.h regex.cpp

    在Linux操作系统中,C语言编程时常常需要处理字符串匹配和模式查找的问题,这时POSIX(Portable Operating System Interface)正则表达式库就显得尤为重要。POSIX正则表达式是符合IEEE Std 1003.1标准的一套规则,它...

    C语言正则表达式[参照].pdf

    C语言正则表达式主要涉及三个关键步骤:编译、匹配和释放。 1. **编译正则表达式**: 使用`regcomp()`函数来编译正则表达式字符串。这个函数接受三个参数:一个`regex_t`结构体指针用于存储编译后的结果,一个包含...

    正则表达式大全(超好)

    1. **sed**:在Unix/Linux环境中,sed是一个流编辑器,它支持正则表达式进行行级别的处理,如查找、替换和删除。 2. **awk**:awk是另一个强大的文本处理工具,它内置了正则表达式引擎,可以方便地处理文本数据。 ...

    linux shell 正则表达式

    在Linux Shell中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等操作。它们允许用户通过使用特定的模式来搜索文本,这些模式可以描述一系列的字符序列。在Shell脚本中,正则表达式常用于`grep`, `sed...

    在Linux下正则表达式和grep命令的使用

    在深入探讨Linux下的正则表达式(Regular Expression,简称RE)和`grep`命令之前,我们首先需要理解正则表达式的基本概念及其在系统管理与日常应用中的重要性。 ### 正则表达式:理解与应用 正则表达式是一种用于...

    REG正则表达式教程

    掌握正则表达式,可以极大地提升你在编程和数据处理上的效率,无论是UNIX/Linux系统还是Windows环境,甚至在各种编程语言中,如Python、Java、JavaScript等,正则表达式都是不可或缺的一部分。 正则表达式的核心...

    JAVA 正则表达式

    例如,在许多支持正则表达式的工具中,"[abc]"表示匹配字符'a'、'b'或'c'中的任意一个字符。这种字符类的使用在Perl语言的正则表达式中也十分普遍。 正则表达式不仅限于字符类,还包括锚点、量词、分组、选择等构造...

    GNU regex 正则表达式 修正版

    6. `regex.c`是实现了正则表达式功能的核心源代码文件,修正版的改动可能涉及其中的关键算法和数据结构,以提高性能和减少问题。 7. `说明.txt`文件可能包含了关于修正版的详细说明,包括如何编译、如何使用以及...

    正则表达式必知必会.zip

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。本资料“正则表达式必知必会”是针对初学者精心编写的教程,旨在帮助读者快速掌握这一...

    正则表达式参考文档揭开正则表达式的神秘面纱

    - 命令行工具:如Unix/Linux的grep、sed、awk等,利用正则表达式处理文本文件。 四、正则表达式实例 1. 验证邮箱格式:`/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/` 2. 匹配URL:`/(http|https):\/\/[\w...

Global site tag (gtag.js) - Google Analytics