本文所有的内容都来自网络,加上一些个人的理解,不保证正确性,欢迎批评指正,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、regex
BSD爱好者乐园fc]g%]E}E5x%@bregex的使用非常简单,只要看一下示例代码1就能明白(示例代码是从“GNU C 规则表达式入门”这篇文章里摘取出来的,是否为原始出处就不得而知了)。
复制内容到剪贴板
代码:
#include
0MJ#?CdA#include BSD爱好者乐园-`G+z*P%c2O%sU+w^*J
#include
u\tY2N!B8G#wS
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_
{
I3Z0cvGs2},[X8G+A size_t len;BSD爱好者乐园F$R&i/`.G%va;O
regex_t re; /* 存储编译好的正则表达式,正则表达式在使用之前要经过编译 */
%m},gr(D{ regmatch_t subs [SUBSLEN]; /* 存储匹配到的字符串位置 */BSD爱好者乐园#t']l4U5eH,\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
阅读(515) | 评论(0) | 转发(0) |