Вы можете определить регулярное выражение, "(\$\$)(.*?)(\$\$)"
с 3 различными группами:
"(\$\$)(.*?)(\$\$)"
^^^^^^|^^^^^|^^^^^^
$1 $2 $3
, а затем, если вам нужна простая замена, вы можете сделать что-то вроде этого:
string replacedText = Regex
.Replace("hello $$name$$, good morning", @"(\$\$)(.*?)(\$\$)", "replacement");
//hello replacement, good morning
или объединить с другими группами
string replacedText = Regex
.Replace("hello $$name$$, good morning", @"(\$\$)(.*?)(\$\$)", "$1replacement$3");
//hello $$replacement$$, good morning
С другой стороны, если вам нужно больше контроля, вы можете сделать что-то вроде этого (от tnx до Wiktor ):
IDictionary<string, string> factory = new Dictionary<string, string>
{
{"name", "replacement"}
};
string replacedText = Regex.Replace(
"hello $$name$$, good morning",
@"(?<b>\$\$)(?<replacable>.*?)(?<e>\$\$)",
m => m.Groups["b"].Value + factory[m.Groups["replacable"].Value] + m.Groups["e"].Value);
//hello $$replacement$$, good morning