Вы можете использовать этот шаблон: @"\bEval\(""(?<Value>.+?)""\)(?:\.ToString\(\))?"
Разбивка:
\bEval
: сопоставить слово-граничное, чтобы мы сопрягать «Eval» как целое слово, а не как часть другого слова
\(""
: буквенная открывающая скобка и двойные кавычки (двойные кавычки появляются дважды, так как они экранируются при использовании строкового литерала, то есть символа @, предшествующего строке)
(?<Value>.+?)
: названо захват группа «Value», которая не является жадным матчем любого персонажа (остановятся на двойных кавычках)
""\)
: закрытие двойных кавычек и закрывающей скобки
(?:\.ToString\(\))?
: чем (?:...)
бит является не- захватив группу, то мы сопоставляем .ToString()
буквально с соответствующим побега, а окончательный ?
делает эту группу дополнительно
Схема замены @"Eval(""${Value}"").ToEncodedString()"
, который легко понять. Важная часть состоит в том, что названная группа захвата «Значение» ссылается на ${Value}
.
Пример кода:
string[] inputs =
{
@"Eval(""something"")",
@"Eval(""hello"").ToString()"
};
string pattern = @"\bEval\(""(?<Value>.+?)""\)(?:\.ToString\(\))?";
string replacement = @"Eval(""${Value}"").ToEncodedString()";
foreach (var input in inputs)
{
Console.WriteLine(Regex.Replace(input, pattern, replacement));
}
Почему бы не открыть эти файлы в Notepad ++ и Заменить текст там его применения для всех открытых файлов –
Строка в кавычках может быть что угодно. Поэтому мне нужно использовать регулярное выражение. Если я использую TextPad, каково будет выражение регулярного выражения поиска и термин регулярного выражения замены? – droidbot
Вы что-то пробовали? Показ http://whathaveyoutried.com заставляет людей видеть, что вы пробовали, и что вы не отвечаете на «код для меня/бесплатно». – rcdmk