`

C的正则匹配

 
阅读更多

http://see.xidian.edu.cn/cpp/html/1428.html

上述网址有关于C的正则匹配用法,或者百度、google搜索“C正则”也能找到为数不多的用法介绍。这里补充一点,就是C的正则表达式传递进去的时候,不可以加//来包围正则,自然也不支持如/[a-z]+/i,它是通过regcomp进行编译的,如果要忽略大小写,编译时设置标记为REG_ICASE即可。

另外还要注意正则表达式中如果要包括"-",那么把它写在最后,或最前,否则会当成a-z这种范围来计算的,regcomp编译无法通过,会提示"nvalid range end”,当然这个信息要通过regerror 来获取。

 

下面附上可用的代码:

 

#include <stdio.h>
#include <sys/types.h>
#include <string.h>
#include <errno.h>
#include <regex.h>

int main(int argc, char **argv)
{
	int errcode, status, i, j;
	int cflags = REG_EXTENDED | REG_ICASE;
	regmatch_t pmatch[3];
	const size_t nmatch = 3;
	regex_t reg;
	const char *pattern = "([a-z0-9._-]+)@([a-z0-9._-]+)";
	char *buf = "Canlynet_sky-Dc123.net@Yahoo-git.com.cn";
	char err_buf[128] = {0};

	if (0 != (errcode = regcomp(&reg, pattern, cflags))) {
		regerror (errcode, &reg, err_buf, sizeof err_buf);
		printf("Error while regcomp: %s\n", err_buf);
		return -1;
	}
	status = regexec(&reg, buf, nmatch, pmatch, 0);
	if (REG_NOMATCH == status)
		printf("No Match\n");
	else if (0 == status) {
		printf("Match:\n");
		for (j=0; j<3; j++) {
			printf("[%d]:", j+1);
			for (i=pmatch[j].rm_so; i<pmatch[j].rm_eo; ++i) 
				putchar(buf[i]);
			printf("\n");
		}
	}
	regfree(&reg);

	return 0;
}

 

分享到:
评论

相关推荐

    C语言正则表达式库

    C语言正则表达式库是用于在C编程环境中处理和匹配正则表达式的软件库。这个库名为PCRE(Perl Compatible Regular Expressions),正如其名,它与Perl语言中的正则表达式语法高度兼容,提供了丰富的功能和强大的匹配...

    C语言正则表达式使用详解

    ### C语言正则表达式使用详解 #### 一、引言 正则表达式作为一种强大的文本处理工具,在数据检索和高级编程中应用广泛。对于C语言开发者而言,虽然标准的C语言本身并不直接支持正则表达式的操作,但是可以通过相关...

    C语言兼容的正则表达式(有实例)

    总之,C语言虽然没有内置正则表达式支持,但借助像PCRE这样的库,我们可以方便地在C程序中实现强大的文本处理功能。理解正则表达式的语法和PCRE库的使用方法对于提高C语言编程能力具有重要意义。通过实例练习,你...

    C语言正则表达式详解 regcomp() regexec() regfree()详解1

    在C语言中,PCRE库提供了几个关键函数,包括`regcomp()`、`regexec()`和`regfree()`,用于编译、匹配和释放正则表达式。 1. `regcomp(regex_t *compiled, const char *pattern, int cflags)` 这个函数用于将给定的...

    IOS Sqlite正则匹配

    如果`LIKE`和`GLOB`无法满足需求,你可以在查询后通过编程语言(如Swift或Objective-C)进行正则匹配。先从SQLite获取数据,然后在内存中使用`NSRegularExpression`(Swift的`Regex`)对结果进行过滤。 7. **性能...

    一个可用的boost的正则匹配

    本项目提供了一个“可用的boost的正则匹配”示例,通过`regex.cpp`源代码文件和可能用于测试的`Noname2.txt`文本文件,我们可以深入探讨Boost.Regex库的使用。 Boost.Regex库是Boost库的一部分,它实现了全面的正则...

    C语言正则表达式操作示例

    本文将详细介绍C语言中正则表达式的操作,结合实例形式分析了C语言正则匹配类似邮箱格式功能的实现技巧。 正则表达式的基本概念 --------------------- 正则表达式是指一个字符串,它可以匹配某个特定的字符串模式...

    正则表达式规则.rar

    举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同) 举例2:表达式 ...

    正则表达式匹配工具js版

    正则表达式匹配工具js版

    正则表达式在数据库查询中的应用

    正则表达式是一种强大的文本匹配工具,它可以简洁地表示复杂的搜索模式。通过使用正则表达式,可以简化上述例子中的SQL查询语句。例如,同样的查询可以使用如下语句完成: ```sql SELECT * FROM Tablel WHERE name ...

    正则表达式(regex)C语言源码,超强查找/替换算法

    正则表达式(Regular Expression,简称regex)是编程领域中一种强大的文本处理工具,它用于在字符串中查找、替换或匹配特定模式。在C语言中,实现正则表达式功能通常需要借助第三方库,比如本案例中提到的Henry ...

    Linux下的C语言正则表达式

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

    java正则表达式匹配工具

    1. 字符集:`[]`用来定义一组字符,比如`[abc]`表示匹配'a'、'b'或'c'。 2. 量词:`*`表示前面的字符可以出现零次或多次,`+`表示至少一次,`?`表示零次或一次,`{n}`表示精确n次,`{n,}`表示至少n次,`{n,m}`表示...

    C++ 正则表达式匹配工具源码

    3. **迭代器遍历**:`std::sregex_iterator`和`std::cregex_iterator`可以遍历字符串中所有符合正则表达式的子串,这对于处理复杂匹配场景非常有用。 4. **替换操作**:`std::regex_replace`函数可以将字符串中匹配...

    编程语言中十六进制的正则匹配

    它由0-9,A-F,组成。与10进制的对应关系是:0-9...(注意:0x中的0是数字0,而不是字母O) 所以C或C++等编程语言的正则匹配为: 代码如下: \b0[xX][0-9a-fA-F]+\b 他可以匹配 代码如下: 0xDEADBEEF 0xdeadbeef 0XDEADBEE

    C语言环境正则表达式支持库

    "C语言环境正则表达式支持库"是指在C编程语言中,用于实现正则表达式功能的库。这些库通常提供一系列函数,允许程序员在自己的程序中集成正则表达式的功能,进行复杂的数据处理和文本分析。 正则表达式的基本词元是...

    正则表达式语法正则匹配正则应用

    例如 `[abc]` 可以匹配 `a`、`b` 或 `c`。 #### 六、边界与特殊字符 1. **单词边界**:`\b` 用于匹配单词的边界位置。例如 `er\b` 在 `never` 中可以匹配到 `er`,但在 `verb` 中则无法匹配。 2. **非单词边界**:...

    IP地址的正则表达式

    通过特定的字符组合,正则表达式能够匹配符合某种模式的字符串。在处理IP地址时,正则表达式可以帮助我们验证一个字符串是否符合IPv4地址的标准格式。 ### IP地址的正则表达式分析 给定的正则表达式为:(25[0-5]|2...

    php正则匹配html中带class的div并选取其中内容的方法

    本文实例讲述了php正则匹配html中带class的div并选取其中内容的方法。分享给大家供大家参考。具体分析如下: 先看一段html代码: 复制代码 代码如下:”chartInfo”&gt;   ”line”&gt;  ”tideTable”&gt;   潮汐表数据...

Global site tag (gtag.js) - Google Analytics