public static void Main()
string input = "Outer[Middle[Innermost]Middle]Outer";
string result = GetInnermostString(input, start, end);
Console.WriteLine("Innermost string: " + result);
public static string GetInnermostString(string input, string start, string end)
int endIndex = input.LastIndexOf(end);
if (endIndex == -1) return "";
int startIndex = input.LastIndexOf(start, endIndex - 1);
if (startIndex == -1) return "";
startIndex += start.Length;
return input.Substring(startIndex, endIndex - startIndex);