歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> LinuxC支持正則表達式的字符串替換函數(二)

LinuxC支持正則表達式的字符串替換函數(二)

日期:2017/2/25 10:38:17   编辑:Linux教程

  z = regcomp(&reg, (const char*)pattern, cflags);

  if(z) //此處為 if(z != 0), 因為C語言裡0永遠為非(False), 任何非0值都為真(True)

  {

  regerror(z, &reg, ebuf, sizeof(ebuf));

  perror("reg1");

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

  reg_rtn_struct_var.rtn = 1;

  reg_rtn_struct_var.pstart = -1;

  reg_rtn_struct_var.pend = -1;

  regfree(&reg);

  return reg_rtn_struct_var;

  }

  /**

  *

  * reg 指向編譯後的正則表達式

  * str 指向將要進行匹配的字符串

  * pm str字符串中可能有多處和正則表達式相匹配, pm數組用來保存這些位置

  * nmacth 指定pm數組最多可以存放的匹配位置數

  *

  * @return 函數匹配成功後,str+pm[0].rm_so到str+pm[0].rm_eo是第一個匹配的子串

  * str+pm[1].rm_so到str+pm[1].rm_eo是第二個匹配的子串

  * ....

  */

  z = regexec(&reg, str, nmatch, pm, 0);

  //沒有找到匹配數據

  if(z == REG_NOMATCH)

  {

  reg_rtn_struct_var.rtn = 1;

  reg_rtn_struct_var.pstart = -1;

  reg_rtn_struct_var.pend = -1;

  regfree(&reg);

  return reg_rtn_struct_var;

  }

  else if(z) //if(z !=0)

  {

  perror("reg3");

Copyright © Linux教程網 All Rights Reserved