DEELX 正则引擎编程示例:查找注释
在一段 C++ 源代码文本中,查找注释。
表达式
/\*((?!\*/).)*(\*/)?|//([^\x0A-\x0D\\]|\\.)* |
方法
Match
代码
#include "deelx.h"
int find_remark(const char * string, int & start, int &
end)
{
// declare
static CRegexpT <char> regexp("/\\*((?!\\*/).)*(\\*/)?|//([^\\x0A-\\x0D\\\\]|\\\\.)*");
// find and match
MatchResult result = regexp.Match(string);
// result
if( result.IsMatched() )
{
start = result.GetStart();
end = result.GetEnd ();
return 1;
}
else
{
return 0;
}
}
int main(int argc, char * argv[])
{
char * code1 = "int a; /* a */";
char * code2 = "int a;";
int start, end;
if( find_remark(code1, start, end) )
printf("In code1, found: %.*s\n", end - start, code1 + start);
else
printf("In code1, not found.\n");
if( find_remark(code2, start, end) )
printf("In code2, found: %.*s\n", end - start, code2 + start);
else
printf("In code2, not found.\n");
return 0;
} |
说明
本例中的表达式,考虑了 C 注释(/*...*/)以及 C++ 注释(//...)。 但未排出注释标记位于字符串内部的情况。 |