J'ai une chaîne 'CCCC' et je veux y associer 'CCC', avec chevauchement.Exgex C++ pour les correspondances chevauchantes
Mon code:
...
std::string input_seq = "CCCC";
std::regex re("CCC");
std::sregex_iterator next(input_seq.begin(), input_seq.end(), re);
std::sregex_iterator end;
while (next != end) {
std::smatch match = *next;
std::cout << match.str() << "\t" << "\t" << match.position() << "\t" << "\n";
next++;
}
...
Cependant, cela ne
retoursCCC 0
et saute la solution CCC 1
, ce qui est nécessaire pour moi.
Je lis à propos de '?' Non gourmand correspondant, mais je ne pouvais pas le faire fonctionner
Merci, il a résolu le problème . Je marquerai ceci comme résolu dès que je peux. –
il en résulte une boucle infinie sur Apple Clang. –
@RichardHodges: Il doit être lié à [this] (http://stackoverflow.com/questions/33795759/c-mac-os-x-regex-causes-infinite-loop-with-regex-replace/33799633#33799633): la réalisation Mac ne gère pas efficacement les matchs vides. Un '.' ajouté après le lookahead pourrait résoudre le problème: [' std :: regex re ("(? = (CCC))."); '] (Https://ideone.com/pEziQp). Si les caractères de saut de ligne doivent correspondre, le '.' devrait être remplacé par' [\ s \ S] '. –