0
我有一個帶混合NC代碼和C#代碼的文本文件。 C#代碼以「<#」開始,以「#>」結尾。 現在我需要一個正則表達式來查找所有NC-評論。一個問題是NC-Comments以「;」開頭因此我有一些問題來區分NC評論與「;」的C#代碼。正則表達式匹配混合C#字符串中的NC註釋 - 代碼
只有一個正則表達式可以實現嗎?
; 1. NC-Comment
FUNCT_A;
FUNCT_B;
<# // C#-Code
int temp = 42;
string var = "hello"; // C#-Comment
#>
FUNCT_C ; 2. Comment
<# // C#-Code
for(int i = 0; i <10; i++)
{
Console.WriteLine(i.ToString());
}
#>
; 3. Comment
FUNCT_D;
正則表達式的結果應該是{1。 NC-註釋,註釋2,3,評論}
我打角落找尋與以下正則表達式:
1.) (;(.*?)\r?\n) --> Finds all NC-Comments but also C#-Code as comment
2.) (#>.*?<#)|(#>.*) --> Finds all NC-Code except the first NC-Code fragment
3.) #>.+?(?=<#) --> Finds all NC-Code except the first and last NC-Code fragment
一種解決方案可能是每個「<#」推到堆棧和彈出每個「 #>「。所以如果堆棧是空的,那麼當前字符串是NC代碼。接下來,我必須知道這個字符串是否是NC評論。
爲什麼使用一個複雜的緩慢的正則表達式時,你可以做同樣更簡單,更快,無正則表達式? – 2013-03-20 19:30:06
這並不那麼簡單。如果C#代碼本身包含評論怎麼辦?如果您在C#註釋中有'<#' or '#>',該怎麼辦? – 2013-03-20 19:37:55
如果沒有正則表達式,你會如何實現? – user1579585 2013-03-21 07:25:42