Jeśli wiesz że optymalnym rozwiązaniem problemu będzie regexp (albo ćwiczysz), to bardzo pomaga świadomość faktu że C++ łączy string jeśli go podzielisz. Możesz dzięki temu opisać wyrażenie regularne. Dodatkowo (bo nie wiem z jakiej biblioteki korzystasz), warto sprawdzić czy regex w danej bibliotece nie wspiera trybu "jawne podawanie spacji", Wtedy taki regexp można komentować w kodzie.
Co do samego regexp'a, widać kilka miejsc do poprawy :-) Poprawić jednak można dopiero jeśli napiszesz dokładnie co chcesz osiągnąć.
Poniżej ideowo użycie takiego regexpa z komentarzem :-)
myRegex re("xxxx" // 4 iksy
"[0-9]" // dowolna pojedyncza cyfra
"\w" // jeden znak słowa
);
// Co zostanie przekształcone do:
// myRegex re("xxxx[0-9]\w");