Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15198633
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: C/C++

2008-03-20 18:18:57

本文所有的内容都来自网络,加上一些个人的理解,不保证正确性,欢迎批评指正,Email/MSN:BSD爱好者乐园Tp+?9i `e{
BSD爱好者乐园B?#O"p%{Pa
说起(Regular Expression),也许有的朋友天天都在使用,比如grep、vim、sed、awk,只是可能对这个名词不大熟悉。正则表达式一般简写为 regex或者regexp,甚至是RE。关于正则表达式的介绍,有很多的文章,用搜索引擎查找就可以找到很不错的使用说明。但是在C/C++语言中如何 去使用,相应的介绍比较缺乏。大多数C标准库自带regex,可以通过/usr/include/regex.h去看,或者man regex看使用说明。perl,等语言更是提供了功能强大的正则表达式,最著名的C语言正则表达式库为PCRE(Perl Compatible Regular Expression)。本文主要对regex和pcre的使用做一点入门介绍。
+c(ZS@WR-R
}*R2W(\7O!E1、regexBSD爱好者乐园 fc]g%]E}E5x%@b
regex的使用非常简单,只要看一下示例代码1就能明白(示例代码是从“GNU C 规则表达式入门”这篇文章里摘取出来的,是否为原始出处就不得而知了)。
复制内容到剪贴板
代码:
#include
0MJ#?CdA#include BSD爱好者乐园-`G+z*P%c2O%sU+w^*J
#include
u\tY2N!B8G#w S
m"iay)pc#define SUBSLEN 10              /* 匹配子串的数量 */
Vr:?2xI#define EBUFLEN 128             /* 错误消息buffer长度 */
#K aS3H {_udC#define BUFLEN 1024             /* 匹配到的字符串buffer长度 */BSD爱好者乐园o9nKe$| o!t L
BSD爱好者乐园.QHg^![ Ai
int main()BSD爱好者乐园&~M!l*ED\8C:{M3pK_
{
I3Z0c vGs2},[X8G+A        size_t          len;BSD爱好者乐园F$R&i/`.G%va;O
        regex_t         re;             /* 存储编译好的正则表达式,正则表达式在使用之前要经过编译 */
%m},gr(D{        regmatch_t      subs [SUBSLEN];     /* 存储匹配到的字符串位置 */BSD爱好者乐园#t']l4U5e H,\A
        char            matched   [BUFLEN];     /* 存储匹配到的字符串 */
u6y;Ufai-E        char            errbuf    [EBUFLEN];    /* 存储错误消息 */BSD爱好者乐园Z)Ei `5wX
        int             err, i;BSD爱好者乐园I8I$`:f6z$E9L)EW
BSD爱好者乐园+T kM[f,V;X
        char            src       [] = "111 Hello World 222";    /* 源字符串 */
/F#q#v|.y8As
阅读(409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~