朱泙漫学屠龙于支离益,单千金之家,三年技成而无所用其巧。
--《庄子·列御寇》

屠龙之术是一个汉语成语,读音tú lóng zhī shù,意思是指极为高明的技术或本领,但是在现实中用不到。


regcomp函数:

功能描述: 把指定的正则表达式编译成一种特定的数据格式。
函数原型: int regcomp(regex_t *preg, const char *regex, int cflags);
参数说明: 

  regex_t 结构体数据类型,用来存放编译后的正则表达式,它的成员re_nsub 用来存储正则表达式中的子正则表达式的个数,子正则表达式就是用圆括号包起来的部分表达式。
regex: 是指向我们写好的正则表达式的指针。
cflags: 有如下4个值或者是它们或运算(|)后的值:
REG_EXTENDED 以功能更加强大的扩展正则表达式的方式进行匹配。
REG_ICASE 匹配字母时忽略大小写。
REG_NOSUB 不用存储匹配后的结果,只返回是否成功匹配。如果设置该标志位,那么在regexec(在下边介绍)将忽略nmatch和pmatch两个参数。
REG_NEWLINE 识别换行符,这样'$'就可以从行尾开始匹配,'^'就可以从行的开头开始匹配。

C语言中使用正则表达式一般分为三步:
编译正则表达式 regcomp()
匹配正则表达式 regexec()
释放正则表达式 regfree()


例程:

#include <stdio.h>
#include <string.h>
#include <regex.h>
 
int main(int argc, char** argv)
{
  int x;
  int ret;
  int lno = 0;        // 行号
  int cflags = 0;     // 参数
  char *p;
  char ebuf[128];     // 错误信息
  char lbuf[256];     // 行缓冲区
  regex_t reg;        // 正则表达结构体
  regmatch_t pm[10];  // 匹配列表
  const size_t nmatch = 10;

  // 编译正则表达式
  p = argv[1];
  ret = regcomp(&reg, p, cflags);
  if (ret != 0)
  {
    regerror(ret, &reg, ebuf, sizeof(ebuf));
    fprintf(stderr, "%s: pattern '%s' \n", ebuf, p);
    return 1;
  }

  // 逐行处理输入的数据
  while(fgets(lbuf, sizeof(lbuf), stdin))
  {
    ++lno;
    // 用正则表达式进行匹配
    ret = regexec(&reg, lbuf, nmatch, pm, 0);
    if (ret == REG_NOMATCH)
    {
      continue;
    }
    else if (ret != REG_NOERROR)
    {
      regerror(ret, &reg, ebuf, sizeof(ebuf));
      fprintf(stderr, "%s: regcom('%s')\n", ebuf, lbuf);
      return 2;
    }

    // 打印匹配行(不需要换行)
    printf("%04d: %s", lno, lbuf);    
  }
  // 重新编译正则表达式前,必须清空之前的编译结果
  regfree(&reg);
  return 0;
}

测试命令:

./regs  "^[\t\ ]*r" < regs.c
0014:   regex_t reg;        // 正则表达结构体
0015:   regmatch_t pm[10];  // 匹配列表
0020:   ret = regcomp(&reg, p, cflags);
0023:     regerror(ret, &reg, ebuf, sizeof(ebuf));
0025:     return 1;
0033:     ret = regexec(&reg, lbuf, nmatch, pm, 0);
0040:       regerror(ret, &reg, ebuf, sizeof(ebuf));
0042:       return 2;
0049:   regfree(&reg);
0050:   return 0;
0071:   return stbuf;

https://www.cnblogs.com/liudw-0215/p/9724347.html