Bonsoir,
J’ai une chaîne de caractères qui a disons la valeur suivante : \033[33m0x7ffee784e96c\033[0m
. J’aimerais récupérer la valeur de cette chaîne sans les caractères d’échappements ANSI c’est à dire juste la valeur 0x7ffee784e96c
. Une chaîne peut avoir aucun ou plusieurs séquences d’échappements. Par exemple :
0x7ffee784e96c\033[0m
deviendrais0x7ffee784e96c
;\033[33m\033[1m0x7ffee784e96c\033[0m
deviendrais0x7ffee784e96c
J’ai écrit la regex suivante que j’ai testé et qui semble bien sélectionner les éléments à retirer :
[\\033]+\[[0-9]+m
Comment obtenir à l’aide de la bibliothèque regex
le résultat voulu ? J’ai essayé ça :
#include <iostream>
#include <regex>
#include <string>
int main()
{
std::string original{"\033[33m\033[1m0x7ffee784e96c\033[0m"}; // Goal: 0x7ffee784e96c
std::regex rgx{"[\\033]+\[[0-9]+m"};
std::cout << std::regex_replace(original, rgx, "") << std::endl;
return 0;
}
Et j’ai obtenu en sortie : [0x7ffee784e96c
(un caractère en plus semble ne pas être affiché avant le [
du début).
Merci pour votre aide !
+0
-0