我正在使用C++ VS 2008去除RTF標記以僅在RTF文本中進行搜索。通過正則表達式崩潰來清除RTF標記
我從CRichTextEdit
到CString
的RTF文本工作得很好。 我這裏如何儘量去除標籤:
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();
線上面的圖案3個崩潰。一個簡單的文本替換模式工作得很好:Ex用"fast fox"
用emplty字符串替換"fast"
。飛機墜毀的消息是在這裏:在ICView的std :: TR1 :: regex_error內存位置0x0012ee20 ..
第一次機會異常在0x7622fbae:在0x7622fbae在ICView.exe
第一次機會異常:微軟C++異常.EXE:微軟C++異常:[重新拋出]在存儲器位置00000000 ..
在0x7622fbae在ICView.exe未處理的異常:微軟C++異常:性病:: TR1在存儲器位置0x0012ee20 :: regex_error ..
困難(如果不是不可能)解析正則表達式的標記語言已經獲得了很多。最近關注Stack Overflow。我對RTF不夠熟悉,認爲同樣的問題也適用,但似乎很可能。 – pavium 2009-11-25 01:33:28