using System.Globalization;
using System.Text.RegularExpressions;
public static void Main()
string input = "log_{yyyy-MM} foo {HH}.txt";
DateTime now = DateTime.Now;
string[] results = Regex.Matches(input,@"\{.*?\}" ).Cast<Match>().Select(m => m.Value).ToArray();
foreach(string result in results) {
input = input.Replace(result,now.ToString(result));
Console.WriteLine(string.Format("log_{0} foo {1}.txt",now.ToString("yyyy-MM"),now.ToString("HH")));