J'utilise C++ VS 2008 pour supprimer les balises RTF afin d'effectuer une recherche dans le texte RTF uniquement.Suppression des balises RTF par des blocages regex
Le texte RTF que j'obtiens de CRichTextEdit
en CString
fonctionne très bien. Voici comment je tente de supprimer les balises:
std::tr1::cmatch res;
std::string str = note;
const std::tr1::regex rx("({\\)(.+?)(})|(\\)(.+?)(\b)");
std::string replacement = "";
std::string result = std::tr1::regex_replace(str,rx,replacement);
CString strSearchText = result.c_str();
La ligne 3 accidents sur le schéma ci-dessus. Un modèle simple pour un remplacement de texte fonctionne très bien: Ex remplacer "fast"
de "fast fox"
avec une chaîne de texte. le message d'accident est ici:
exception de première chance à 0x7622fbae dans ICView.exe: Microsoft C++ exception: std :: tr1 :: regex_error à l'emplacement de mémoire 0x0012ee20 ..
exception de première chance à 0x7622fbae dans ICView .exe: Microsoft C++ exception: [rethrow] à l'emplacement de mémoire 0x00000000 ..
exception non gérée à 0x7622fbae dans ICView.exe: Microsoft C++ exception: std :: tr1 :: regex_error à l'emplacement de mémoire 0x0012ee20 ..
La difficulté (sinon impossible) d'analyse syntaxique des langages de balisage avec des expressions régulières a reçu beaucoup de. attention sur Stack Overflow récemment. Je ne suis pas assez familier avec RTF pour dire que les mêmes problèmes s'appliquent, mais il semble probable. – pavium