2013-12-10 36 views
0

我需要將\n添加到Visual Studio 2012 C++項目中的TRACE語句中。即將TRACE("test an");等陳述替換爲TRACE("test an\n");正則表達式查找沒有換行符的TRACE?

我haved嘗試正則表達式(TRACE\(\".*([^\\][^n]))\"$1\\n"

但有兩個問題。

1)正則表達式不匹配最後一個字符爲n的字符串,但倒數第二個字符不是\

例如TRACE("haha an")不符。

2)替換字符串\\n不能轉義\\\,被替換的字符串將包含兩個\

你能幫助我嗎?謝謝。

回答

1
Regex.Replace(text, "(TRACE\\(.*(?<!\\\\n))(\"\\))", "$1\\n$2"); 

需要使用,請參閱HERE

1

嘗試正則表達式:

(TRACE\(")(.*)("\)) 

與更換:

$1$2\\n$3 

但是,這將增加\n即使\n已經存在。爲了解決這個問題,你可以使用正則表達式:

(TRACE\(")(.*?)(\\n)*("\)) 

與更換: 「零寬度負回顧後發斷言」

$1$2\\n$4