2014-05-06 26 views
0

我需要以下情況幫助:正則表達式替換回

private string _endPointPattern = @"X(?<name>[a-zA-Z0-9-:]*)X"; 

現在,如果我想獲得組,我只是得到它:

match.Groups["name"] 

現在讓我們假設恢復情況:

我想將字符串「Jerry」插入到命名參數中以獲得XJerryX。 如何用Regex做到這一點?

+0

您能否澄清並舉例說明您想要實現的目標? – Szymon

+0

我想插入文字:Jerry進入_endPointPattern,進入組所以結果會是XJerryX – MistyK

回答

1

假設X是一些正則表達式模式(否則,簡單地使用String.Replace)的佔位符,這應該工作:

var yourInputString = "XX"; 
var replacement = "Jerry"; 
Regex.Replace(yourInputString, 
       @"(X)(X)", 
       String.Format(@"$1{0}$2", replacement)); 

編輯:後您的評論(您可能需要更新的問題):

你需要更新你的正則表達式,像這樣:

private string _endPointPattern = 
    @"(?<prefix>X)(?<name>[a-zA-Z0-9-:]*)(?<suffix>X)"; 

然後用:

var yourInputString = "XX"; 
var replacement = "Jerry"; 
var result = Regex.Replace(yourInputString, 
          _endPointPattern, 
          String.Format(@"${{prefix}}{0}${{suffix}}", replacement)); 
0

不是很清楚的問題,但下面的代碼適用於多個案例:XX => XJerryXXBobbyX => XJerryX。但是XXavierX => XJerryXJerryX

string output = Regex.Replace(text, "(?<=X).*?(?=X)", "Jerry"); 
0

decPL您的答案是最接近我需要的解決方案。不過,我已經做了簡單的方法:

private const string EndPointFormat = @"X{0}X"; 

private const string Regex = @"(?<name>[a-zA-Z0-9-:]*)"; 

private string _endPointPattern = string.Format(EndPointFormat, Regex); 

string endPoint = string.Format(EndPointFormat, "Jerry"); 

現在我可以用_endPointPattern採取從正則表達式的名稱和插入回用字符串格式。