Есть строка вида: [assembly: AssemblyCulture("параметр")]
Есть паттерн для ее обнаружения: \[assembly: AssemblyCulture\("(?<parameter>w+)"\)\]
Задача: заменить в искомой строке значение группы parameter (в примере строки текст "параметр") на другую строку.
Как заменить значение именованой группы на другое значение?
Что-то вроде match.Result("parameter") = "новый параметр", чтобы получилось [assembly: AssemblyCulture("новый параметр")]
Re: Помогите с регулярным выражением
От:
Аноним
Дата:
04.10.10 17:31
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Есть строка вида: [assembly: AssemblyCulture("параметр")]
пардон, строка может быть большой (читай исходный код AssemblyInfo.cs), нужно выделить (найти) именно эту строку и заменить там "параметр" на "новый параметр"
Здравствуйте, Аноним, Вы писали:
А>Как заменить значение именованой группы на другое значение? А>Что-то вроде match.Result("parameter") = "новый параметр", чтобы получилось [assembly: AssemblyCulture("новый параметр")]
Как вариант можно вот так:
const string INPUT = @"[assembly: AssemblyCulture(""параметр"")]";
const string PATTERN = @"(?<start>\[assembly: AssemblyCulture\("")(?<parameter>.*)(?<end>""\)\])";
Match match = Regex.Match(INPUT, PATTERN);
if (match.Success)
Console.WriteLine("{0}{1}{2}", match.Groups["start"].Value, "new", match.Groups["end"].Value);
Re[2]: Помогите с регулярным выражением
От:
Аноним
Дата:
04.10.10 17:46
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>Как вариант можно вот так: L>
з.ы. я только начал разбираться с регулярными выражениями, надеялся, что там есть такая необходимая функция (заменить значение конкретной группы на другое значение). я правильно понимаю, что так, как я хочу нельзя сделать?
Здравствуйте, Аноним, Вы писали:
А>Есть строка вида: [assembly: AssemblyCulture("параметр")] А>Есть паттерн для ее обнаружения: \[assembly: AssemblyCulture\("(?<parameter>w+)"\)\]
А>Задача: заменить в искомой строке значение группы parameter (в примере строки текст "параметр") на другую строку.
А>Как заменить значение именованой группы на другое значение?
Надо "поймать" в именованые группы то, что Вы хотите оставить из исходного совпадения, а не то, что хотите заменить:
string value = "[assembly: AssemblyCulture ( \"en-US\" ) ]";
var result = Regex.Replace(
input: value,
pattern: @"(?<begin>\[\s*assembly\s*:\s*AssemblyCulture\s*\(\s*"")[\w-]+(?<end>""\s*\)\s*\])",
replacement: @"${begin}ru-RU${end}");
Здравствуйте, Аноним, Вы писали:
А>з.ы. я только начал разбираться с регулярными выражениями, надеялся, что там есть такая необходимая функция (заменить значение конкретной группы на другое значение). я правильно понимаю, что так, как я хочу нельзя сделать?
В принципе и вот так можно:
const string INPUT = @"[assembly: AssemblyCulture(""параметр"")]";
const string PATTERN = @"\[assembly: AssemblyCulture\(""(?<parameter>.*)""\)\]";
Match match = Regex.Match(INPUT, PATTERN);
if (match.Success) {
Group parameterGroup = match.Groups["parameter"];
Console.WriteLine(INPUT.Replace(parameterGroup, "new value"));
}
Re[4]: Помогите с регулярным выражением
От:
Аноним
Дата:
04.10.10 18:18
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>В принципе и вот так можно: L>