String2DArray RegEx::PregMatchAll(const std::string& InputSource) { StringArray Temp; String2DArray Result; Result.SetLength(1); boost::sregex_iterator I(InputSource.begin(), InputSource.end(), RegExpression), J; while(I != J) { for (size_t K = 0; K <= I->size(); ++K) { if(!I->str(K).empty()) Temp(I->str(K)); } ++I; } for (size_t K = 0; K < Temp.Size(); K += 2) Result[0](Temp[K]); if (Temp.Size() > 1) { Result.SetLength(2); for (size_t K = 1; K < Temp.Size(); K += 2) Result[1](Temp[K]); } return Result; }
int main () { printf ("Results of regexp3_test:\n"); const char* pattern = "dynamic *\\( *([[:digit:]]*) *, *([[:digit:]]*) *, *'(.*)' *\\).*"; const char* str = "dynamic (256 , 512,'test_query')???"; StringArray tokens = parse (str,pattern); printf ("parse '%s' (pattern='%s') on %lu tokens:\n", str,pattern,tokens.Size ()); for (size_t i=0;i<tokens.Size ();i++) printf (" '%s'\n",tokens [i]); return 0; }