J'ai des difficultés ridicules correspondant à une regex et remplaçant le match avec une autre chaîne. Je veux y parvenir avec des itérateurs, comme indiqué ci-dessous. La partie qui ne fonctionne pas est d'obtenir des itérateurs qui délimitent la correspondance dans la chaîne d'origine et que je pouvais ensuite passer à la chaîne :: Remplacer. J'ai essayé d'utiliser un objet STD :: Match_Results pour obtenir une paire d'itérateurs, mais remplacer J'ai le sentiment vague Que j'utilise la mauvaise classe de match ou le mauvais type d'itérateur, mais d'une manière ou d'une autre, vous ne pouvez pas trouver mon moyen de sortir de la jungle de modèle. p> m code> par
MR code> dans l'appel de Regex_search échoue.
3 Réponses :
Essayez ce segment Utilisation typique dans tandis que la boucle p>
Merci, cela m'a donné la bonne idée. m [0] .Pritst serait le début et m [0] .seconde l'extrémité itérative.
Pourquoi voulez-vous remplacer par des itérateurs? Vous savez peut-être cela, mais il y a Un autre échantillon similaire à partir d'un tutoriel de regex à l'aide de Regex_replace (faites défiler un bit) p> Il est possible d'utiliser des itérateurs, mais vous besoin de créer une nouvelle chaîne de courant. Si vous voulez, je peux faire un échantillon. p> p> std :: regex_replace code> méthode qui pourrait faire cela.
Grâce à @edward, j'ai réalisé que m [0] contient une paire d'itérateurs qui définissent la sous-chaîne correspondante. J'avais essayé première et seconde mais sur m au lieu de m [0], ce qui a bien sûr échoué.
avec ce remplacement était facile: p>
Et avec des itérateurs, il est possible de construire une regex_replace () avec une simulation de rappel. Utilisation de la boucle tandis que vous pouvez le faire en gardant une trace du dernier match Itérateur et en fonction du segment actuel, sresult.append (lance, m [0] .First); Sresult + = std :: string ("CCC"); code> où
lanceend = mlast [0] .seconde; code> Dans une simulation de rappel en boucle, vous pouvez suivre le nombre de correspondances, Contrôler totalement la sortie et sortir de la boucle via
pause; code> ou paramètre
start = fin; code> Voir ceci par exemple Stackoverflow.com/Questtions/22617209/...
Fonctionne intelligente avec site