首页 > 应用 > 软件技巧 > 正文

在C/C++语言中使用正则表达式

2024-07-16 17:44:53
字体:
来源:转载
供稿:网友

  本文所有的内容都来自网络,加上一些个人的理解,不保证正确性,欢迎批评指正
  说起正则表达式(Regular Expression),也许有的朋友天天都在使用,比如grep、vim、sed、awk,只是可能对这个名词不大熟悉。正则表达式一般简写为regex或者regexp,甚至是RE。关于正则表达式的介绍,有很多的文章,用搜索引擎查找就可以找到很不错的使用说明。但是在C/C++语言中如何去使用,相应的介绍比较缺乏。大多数C标准库自带regex,可以通过/usr/include/regex.h去看,或者man regex看使用说明。perl,php等语言更是提供了功能强大的正则表达式,最著名的C语言正则表达式库为PCRE(Perl Compatible Regular Expression)。本文主要对regex和pcre的使用做一点入门介绍。
  1、regex
  regex的使用非常简单,只要看一下示例代码1就能明白(示例代码是从“GNU C 规则表达式入门”这篇文章里摘取出来的,是否为原始出处就
  不得而知了)。
  CODE:#include <stdio.h>
  #include <string.h>
  #include <regex.h>
  #define SUBSLEN 10              /* 匹配子串的数量 */
  #define EBUFLEN 128          /* 错误消息buffer长度 */
  #define BUFLEN 1024          /* 匹配到的字符串buffer长度 */
  int main()
  {
  size_t       len;
  regex_t       re;      /* 存储编译好的正则表达式,正则表达式在使用之前要经过编译 */
  regmatch_t    subs [SUBSLEN]; /* 存储匹配到的字符串位置 */
  char          matched [BUFLEN];     /* 存储匹配到的字符串 */
  char          errbuf [EBUFLEN]; /* 存储错误消息 */
  int          err, i;
  char          src    [] = "111 <title>Hello World</title> 222"; /* 源字符串 */
  char          pattern [] = "<title>(.*)</title>"; /* pattern字符串 */
  printf("String : %s/n", src);
  printf("Pattern: /"%s/"/n", pattern);
  /* 编译正则表达式 */
  err = regcomp(&re, pattern, REG_EXTENDED);
  if (err) {
  len = regerror(err, &re, errbuf, sizeof(errbuf));
  printf("error: regcomp: %s/n", errbuf);
  return 1;
  }
  printf("Total has subexpression: %d/n", re.re_nsub);

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表