+ // we will alloc the array later (only if really needed) but count
+ // the number of sub-expressions in the regex right now
+
+ // there is always one for the whole expression
+ m_nMatches = 1;
+
+ // and some more for bracketed subexperessions
+ const wxChar *cptr = expr.c_str();
+ wxChar prev = _T('\0');
+ while ( *cptr != _T('\0') )
+ {
+ // is this a subexpr start, i.e. "(" for extended regex or
+ // "\(" for a basic one?
+ if ( *cptr == _T('(') &&
+ (flags & wxRE_BASIC ? prev == _T('\\')
+ : prev != _T('\\')) )
+ {
+ m_nMatches++;
+ }
+
+ prev = *cptr;
+ cptr++;
+ }