2011-10-11 44 views
0

在搜索替換的上下文中使用<matcher>?()正則表達式時會發生什麼?正則表達式搜索/ seplace模式有什麼作用?

string input = "z=""(?<matcher>([a-z]{3,15}))""" 
string pattern = z="cat" 
string replacement = @"<ANIMAL>${matcher}</ANIMAL>"; 
string formattedOutput = Regex.Replace(input, pattern, replacement); 

表達式評估後,formattedOutput將爲「cat」。

+0

您的代碼(a)不編譯和(b)沒有意義。投票結束。 – spender

+1

你確定你沒有用'pattern'交換'input'嗎? – Amry

回答

2

你有很多的錯誤......

這裏是修正:

 string pattern = @"z=\""(?<matcher>([a-z]{3,15}))\"""; 
     string input = @"z=""cat"""; 
     string replacement = @"<ANIMAL>${matcher}</ANIMAL>"; 
     string formattedOutput = Regex.Replace(input, pattern, replacement); 

     Console.WriteLine(formattedOutput); 

?<matcher>只是一個命名組。你可以選擇任何名字。例如,以下內容是等效的:

 string pattern = @"z=\""(?<WHATEVER>([a-z]{3,15}))\"""; 
     string input = @"z=""cat"""; 
     string replacement = @"<ANIMAL>${WHATEVER}</ANIMAL>"; 
     string formattedOutput = Regex.Replace(input, pattern, replacement); 

     Console.WriteLine(formattedOutput);