正则表达式找到没有换行的TRACE?

时间:2013-12-10 08:59:18

标签: .net regex visual-studio-2012

我需要在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未将\\转义为\,替换后的字符串将包含两个\

你能帮助我吗? THX。

2 个答案:

答案 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