using System;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var s = "ABCDFFFE[_]XXX[_]O0[_]%[TT]__";
var result = Regex.Replace(s, @"(\[[^][]*])|[_%]", m =>
m.Groups[1].Success ? m.Groups[1].Value : m.Value == "_" ? "?" : "*");
Console.WriteLine(result); // Result 1
result = Regex.Replace(s, @"(\[([^][]*)])|[_%]", m =>
m.Groups[1].Success ? m.Groups[2].Value : m.Value == "_" ? "?" : "*");
Console.WriteLine(result); // Result 2
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzID0gIkFCQ0RGRkZFW19dWFhYW19dTzBbX10lW1RUXV9fIjsKICAgICAgICB2YXIgcmVzdWx0ID0gUmVnZXguUmVwbGFjZShzLCBAIihcW1teXVtdKl0pfFtfJV0iLCBtID0+CiAgICAgICAgICAgICAgICBtLkdyb3Vwc1sxXS5TdWNjZXNzID8gbS5Hcm91cHNbMV0uVmFsdWUgOiBtLlZhbHVlID09ICJfIiA/ICI/IiA6ICIqIik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUocmVzdWx0KTsgLy8gUmVzdWx0IDEKICAgICAgICByZXN1bHQgPSBSZWdleC5SZXBsYWNlKHMsIEAiKFxbKFteXVtdKildKXxbXyVdIiwgbSA9PgogICAgICAgICAgICAgICAgbS5Hcm91cHNbMV0uU3VjY2VzcyA/IG0uR3JvdXBzWzJdLlZhbHVlIDogbS5WYWx1ZSA9PSAiXyIgPyAiPyIgOiAiKiIpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHJlc3VsdCk7IC8vIFJlc3VsdCAyCgl9Cn0=