static std::string regexStrings[16]; static pcrecpp::Arg regexCaptures[16] = { ®exStrings[0],®exStrings[1],®exStrings[2],®exStrings[3], ®exStrings[4],®exStrings[5],®exStrings[6],®exStrings[7], ®exStrings[8],®exStrings[9],®exStrings[10],®exStrings[11], ®exStrings[12],®exStrings[13],®exStrings[14],®exStrings[15] }; static const pcrecpp::Arg* regexCapturesArray[16] = { ®exCaptures[0],®exCaptures[1],®exCaptures[2],®exCaptures[3], ®exCaptures[4],®exCaptures[5],®exCaptures[6],®exCaptures[7], ®exCaptures[8],®exCaptures[9],®exCaptures[10],®exCaptures[11], ®exCaptures[12],®exCaptures[13],®exCaptures[14],®exCaptures[15] }; pcrecpp::RE regex(subfield, PCRE_CASELESS); int consumed; int numArgs = regex.NumberOfCapturingGroups(); if (numArgs > 16) numArgs = 16; if (numArgs < 0) { ScriptEngineReportError(thread, false, "bad regular expression: 'regex(%s)'", subfield); strcpy(str, "0"); } else if (!regex.DoMatch(var, pcrecpp::RE::UNANCHORED, &consumed, regexCapturesArray, numArgs)) strcpy(str, "0"); else { strcpy(str, "1"); for (int i = 0; i < numArgs; ++i) { sprintf(END_OF(str), "\t%s", regexStrings[i].c_str()); } }