All pastes #30527 Raw Edit

Miscellany

public text v1 · immutable
#30527 ·published 2005-11-23 07:44 UTC
rendered paste body
static std::string			regexStrings[16];
static pcrecpp::Arg			regexCaptures[16] = 
{
	&regexStrings[0],&regexStrings[1],&regexStrings[2],&regexStrings[3],
	&regexStrings[4],&regexStrings[5],&regexStrings[6],&regexStrings[7],
	&regexStrings[8],&regexStrings[9],&regexStrings[10],&regexStrings[11],
	&regexStrings[12],&regexStrings[13],&regexStrings[14],&regexStrings[15]
};
static const pcrecpp::Arg*	regexCapturesArray[16] =
{
	&regexCaptures[0],&regexCaptures[1],&regexCaptures[2],&regexCaptures[3],
	&regexCaptures[4],&regexCaptures[5],&regexCaptures[6],&regexCaptures[7],
	&regexCaptures[8],&regexCaptures[9],&regexCaptures[10],&regexCaptures[11],
	&regexCaptures[12],&regexCaptures[13],&regexCaptures[14],&regexCaptures[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());
	}
}