2014-05-06 1 views
0

мне нужна помощь со следующей ситуацией:Regex заменить назад

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)); 

EDIT: после того, как комментарий (вы можете обновить вопрос):

Вам необходимо обновить регулярное выражение, например, так:

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 => XJerryX, XBobbyX => 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 взять имена из Regex и вставить его обратно с форматом строки.

Смежные вопросы