在Linux下C/C++的Regular Expression(3)

  /* 逐行处理输入的数据 */

  while(fgets(lbuf, sizeof(lbuf), stdin)) {

  ++lno;

  if ((z = strlen(lbuf)) >; 0 && lbuf[z-1] == '\n')

  lbuf[z - 1] = 0;

  /* 对每一行应用正则表达式进行匹配 */

  z = regexec(?, lbuf, nmatch, pm, 0);

  if (z == REG_NOMATCH) continue;

  else if (z != 0) {

  regerror(z, ?, ebuf, sizeof(ebuf));

  fprintf(stderr, "%s: regcom('%s')\n", ebuf, lbuf);

  return 2;

  }

  /* 输出处理结果 */

  for (x = 0; x < nmatch && pm[x].rm_so != -1; ++ x) {

  if (!x) printf("%04d: %s\n", lno, lbuf);

  printf(" $%d='%s'\n", x, substr(lbuf, pm[x].rm_so, pm[x].rm_eo));

  }

  }

  /* 释放正则表达式 */

  regfree(?);

  return 0;

  }

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzyygx.html