2014-10-22 105 views
0

我有很多代碼,並希望找到並替換它中的一些文本。我想要替換所有匹配,但不包括那些在評論中的匹配。假設我想在代碼中查找並替換字符串「text」。例如:正則表達式的註釋

Console.WriteLine("text"); // must be replaced 
// some text /* does not need to be replaced because this string begins from "//" */ 

不幸的是,我不知道如何用正則表達式來做到這一點。有人能幫助我嗎?

+0

會是什麼在第二行輸出? – vks 2014-10-22 08:43:04

+0

第二行未找到。正則表達式我想得到不匹配第二行中的「文本」 – Itsme 2014-10-22 08:48:06

+0

您正在使用哪個工具? – nhahtdh 2014-10-22 08:55:37

回答

-1
^[^\/]+(\/\/.*)\n 

我想這應該滿足您的需求

+0

以便它可以分別捕獲每一行 – Vajura 2014-10-22 09:01:29

+0

您錯過了這一點。 OP想要替換'text',而不是帶註釋的行。 – nhahtdh 2014-10-22 09:10:07

0

按要求嚴格走出去「發現text除非//\n包圍」,這將是使用,只處理捕獲組1的正則表達式。但是請注意(就像我在評論中所說的那樣)字符串內的註釋分隔符沒有被計算在內,如debuggex demo中的第3行所示。 nhahtdh是正確的,說替換回調函數是這裏的方法,然後你可以捕獲任何字符串並在回調中進一步調查。

\/\/[^\n]*(?:\n|$)|(text) 

Regular expression visualization

Debuggex Demo