编程示例 - 查找注释

DEELX

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++ 注释(//...)。

但未排出注释标记位于字符串内部的情况。

 

regexlab.com © 2005 - 2006