这仅适用于问题1。
我有一个在Windows上运行并使用多行MFC编辑器框的应用程序。
编辑器框期望CRLF换行符,但是我需要
用一些非常大/讨厌的正则表达式来解析输入的文本。
我不想在编写正则表达式时强调这一点,所以
我最终在解析器和编辑器之间来回标准化,以便正则表达式
只使用\n
。我还捕获粘贴操作并将其转换为盒子。
这并不需要很多时间。
这就是我用的。
boost::regex CRLFCRtoLF (
" \\r\\n | \\r(?!\\n) "
, MODx);
boost::regex CRLFCRtoCRLF (
" \\r\\n?+ | \\n "
, MODx);
// Convert (All style) linebreaks to linefeeds
// ---------------------------------------
void ReplaceCRLFCRtoLF( string& strSrc, string& strDest )
{
strDest = boost::regex_replace ( strSrc, CRLFCRtoLF, "\\n" );
}
// Convert linefeeds to linebreaks (Windows)
// ---------------------------------------
void ReplaceCRLFCRtoCRLF( string& strSrc, string& strDest )
{
strDest = boost::regex_replace ( strSrc, CRLFCRtoCRLF, "\\r\\n" );
}
[\r\n]+
-或这样的事情