There are a lot of ways to do this - I would probably use a regex:
public static Regex regex = new Regex(
"(.*?)\\s({{.*?}})\\s(.*)",
RegexOptions.IgnoreCase
| RegexOptions.Multiline
| RegexOptions.Singleline
| RegexOptions.CultureInvariant
| RegexOptions.Compiled
);
This woudl give you three groups, broken as you wanted.