C++ std::regex Expressions Régulières Trouver des correspondances multiples

Je suis en train d'analyser un certificat en c++ et a décidé que c'était une bonne occasion d'apprendre les Regex. Je viens d'apprendre sur les regex une heure ou deux il ya, donc excusez mon manque de connaissance.

Je suis à la recherche pour l'ensemble de l'unité d'organisation est associée à une entrée.

Je suis en train de faire les suivants:

std::smatch OuMatches;
std::string myCertSubject = "O=\"My Company, Incorporated\", OU=Technician Level - A3, OU=Access Level - 1, CN=\"Name, My\", [email protected]";

std::regex subjectRx("OU=[[:w:]|[:s:]|[:digit:]|-]*", std::regex_constants::icase);
bool foundOU = std::regex_search(mySubject,OuMatches,subjectRx);

Pourquoi ne pas me donner tous les résultats (2) qui correspondent à mon reg ex? Est-il un moyen de l'obtenir?

Vous devriez poster positives et négatives des matchs.
autant que je sache, std::regex n'est pas implémentée dans la bibliothèque libstdc++ encore. Utiliser boost::regex
J'attends que les deux OU=... exemples dans ma chaîne ci-dessus correspondent, mais seulement jusqu'à la prochaine OU, CN, etc. Quelque chose comme le CN entrée ci-dessus ne correspondent PAS, et maintenant que je pense à ce sujet, ni de tout OU contenant d'autres signes de ponctuation. Comme je l'ai dit je suis nouveau sur le regex, mais ce que je veux faire est d'obtenir tous les de la OU des champs, pas y compris l'entrée suivante (OU= CN=, E=, etc.)
double possible de Comment faire pour correspondre à de multiples résultats en utilisant std::regex

OriginalL'auteur Kyle Preiksa | 2013-09-13