正则表达式匹配(c/c++)非注释部分

2014-11-24 01:24:16 · 作者: · 浏览: 2
最近在写一个C++的parser,里面有一个功能是要解析出所有有效的头文件。如有文件片段如下:
#include   
#include   
#include   
#include   
#include   
#include   
  
/* #include  */  
/*#include  */  
/* #include */  
/*#include */  
  
#include   
  
/* 
 #include  */  
  
/* #include   
*/  
  
/*  
#include   
*/  
  
/*  
    #include 
*/ // #include // #include // #include

需要从中检索出QObject,QStringList,QVariant,QMap,QVariantMap,QVariantList,test这几个有效的头文件(去除注释掉的)。
要完成这样的检索我们有很多方法,正则表达式是一种比相对比较便捷的方法。在这里要匹配的头文件要去除注释掉的部分,实质上也就是把前面是/*或者//的情况过滤掉。对应在正则表达式中我们可以使用负前后查找(负零宽度断言)来实现。表达式如下:
( ]*( !\s*\*/\s*)