C コードでは、パターンがファイルの少なくとも 1 行で一致するかどうかを確認する必要があります。式にキャレットが必要です。私が持っているものは次のとおりです。
const char *disambiguate_pp(SourceFile *sourcefile) {
char *p = ohcount_sourcefile_get_contents(sourcefile);
char *eof = p + ohcount_sourcefile_get_contents_size(sourcefile);
/* prepare regular expressions */
pcre *re;
const char *error;
int erroffset;
re = pcre_compile("^\\s*(define\\s+[\\w:-]+\\s*\\(|class\\s+[\\w:-]+(\\s+inherits\\s+[\\w:-]+)?\\s*{|node\\s+\\'[\\w:\\.-]+\\'\\s*{)",
PCRE_MULTILINE, &error, &erroffset, NULL);
for (; p < eof; p++) {
if (pcre_exec(re, NULL, p, mystrnlen(p, 100), 0, 0, NULL, 0) > -1)
return LANG_PUPPET;
}
return LANG_PASCAL;
}
何らかの理由で、次の行が正規表現に一致するため (そしてすべきではない)、キャレットは無視されているように見えます。
// update the package block define template (the container for all other
私は多くのことを試しましたが、これを機能させることができませんでした。私は何を間違っていますか?