当前位置:  开发笔记 > 编程语言 > 正文

C中的正则表达式

如何解决《C中的正则表达式》经验,为你挑选了2个好方法。

在C#或PHP中使用正则表达式对我来说非常容易.但是目前我需要在C中使用正则表达式.而且,我似乎并不完全理解regcomp或regexec的用法.这绝对是因为我缺乏C语言的经验.

任何帮助和示例将不胜感激!



1> John Milliki..:

使用PCRE库.示例包含在源中,demo/目录中.这是一个直接链接pcredemo.c.



2> pilcrow..:

当您指示regex(3)功能时,这可能会让您开始.以下是一个与其参数相匹配的简单程序.但是,如果你对C比较陌生,那么你会想要慢慢使用regex(3),因为你将使用指针和数组以及 - regmatch_t提供补偿和狮子,老虎和熊.;)

$ ./regexec '[[:digit:]]'   56789  alpha  "   "  foo12bar
matched: 56789
matched: foo12bar
$ ./regexec '[[:digit:]](foo'
error: Unmatched ( or \(
$ ./regexec '['
error: Invalid regular expression

......和来源:

#include 
#include 
#include 

int main(int argc, char **argv) {
  int r;
  regex_t reg;

  ++argv;  /* Danger! */

  if (r = regcomp(®, *argv, REG_NOSUB|REG_EXTENDED)) {
    char errbuf[1024];
    regerror(r, ®, errbuf, sizeof(errbuf));
    printf("error: %s\n", errbuf);
    return 1;
  }

  for (++argv; *argv; ++argv) {
    if (regexec(®, *argv, 0, NULL, 0) == REG_NOMATCH)
      continue;
    printf("matched: %s\n", *argv);
  }

  return 0;
}

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有