C的正则表达式

在网上看到很多人在C/C++下寻求正则表达式的库,有的老大往往推荐boost,但是一般的linux distribution已经体贴地为我们想到这一点,利用regexec等API,可以较为完美的解决一些比如(A|B)这样的匹配问题。

/*
 在目标文件中逐行进行正则表达式匹配
*/
#include <regex.h>
#include <string.h>
#include <iostream>
#include <fstream>

using namespace std;




int main(int argc,char* argv[])
{
  static const char* src = "(PROXY|bee)";//匹配条件
  regex_t regexp;
  regcomp(&regexp,src,REG_EXTENDED);

  bool matchFlag = false;



  char targetStr[128] = "this is aawa baee joke";
  ifstream file("test.txt");//目标文件

  int iLine = 1;
  while(file.getline(targetStr,128,'/n'))
    {
      cout<<"--------------------------------------------"<<endl;
      matchFlag = (regexec(&regexp,targetStr,0,0,0) == 0);
      if(matchFlag)
        {
          cout<<"match at line: ["<<iLine<<"]"<<endl;
          cout<<"content is : "<<targetStr<<endl;
        }
      else
        {
          cout<<"not match at line : ["<<iLine<<"]"<<endl;
        }
      iLine++;
    }

  regfree(&regexp);

  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值