2013-09-11 51 views
0

我需要一個接口在C#中添加到類和需要匹配,如果已經聲明:正則表達式匹配結腸

public partial class Client 

需要被

public partial class Client: IEntity 

當發生已存在

public partial class Client: IEntity 

必須保持

我已將此公開部分類(\ w +)轉換爲「公開部分類$ 1:IEntity」

謝謝。

+1

目前尚不清楚你想在這裏做什麼。 – hwnd

回答

0

如果您只想處理特定類型的格式(即「public partial class'classname'」)。像這樣的東西會做:

class Program 
{ 
    static readonly Regex re = new Regex(@"^public partial class[^:]+$", RegexOptions.Compiled); 
    static string Replacement(string stringToReplace) 
    { 
     return re.Replace(stringToReplace, match => match.Value + ": IEntity");     
    } 
    static void Main() 
    { 
     string newString = Replacement("public partial class Client"); 
     Console.WriteLine(newString); //output: "public partial class Client: IEntity" 
     newString = Replacement("public partial class Server"); 
     Console.WriteLine(newString); //output: "public partial class Server: IEntity" 
     newString = Replacement("public partial class Server: IEntity"); 
     Console.WriteLine(newString); //output: "public partial class Server: IEntity" 
    }  
} 

其中:

  • ^意味着從一開始比賽。
  • $表示匹配到最後。
  • [^:] +指任何字符不 ':'
0

我想說一個直線上升的正則表達式是一種危險的做法。

如果你有:

public partial class Client: RichClient 

更好地確保不添加額外的:IEntity

如果可能的話,你也許可以得到完整的一行文字,然後寫一個函數來確定哪些去做。

跨越多行會出現問題嗎?

0

看來您正在尋找這樣的事情

(get-content test.cs -raw) -replace 'public partial class (\w+)(:.*)?$','public partial class $1: IEntity'