我需要在Visual Studio 2012 c ++项目中将\n
附加到我的TRACE语句中。这是将TRACE("test an");
等语句替换为TRACE("test an\n");
。
我尝试过正则表达式(TRACE\(\".*([^\\][^n]))\"
和$1\\n"
但有两个问题。
1)正则表达式与最后一个字符为n的字符串不匹配,但倒数第二个字符不是\
。
e.g。 TRACE("haha an")
不匹配。
2)替换字符串\\n
未将\\
转义为\
,替换后的字符串将包含两个\
。
答案 0 :(得分:1)
试试正则表达式:
(TRACE\(")(.*)("\))
替换:
$1$2\\n$3
但即使\n
已存在,也会添加\n
。要解决此问题,您可以使用正则表达式:
(TRACE\(")(.*?)(\\n)*("\))
替换:
$1$2\\n$4
答案 1 :(得分:1)
Regex.Replace(text, "(TRACE\\(.*(?<!\\\\n))(\"\\))", "$1\\n$2");
需要使用“零宽度负向反馈断言。”,请参阅HERE