Этот метод должен помочь. Отправьте свою строку, и появится список результатов:
public List<string> StringParser( string s ){
var list = new List<string>();
for( int i = 0; i < s.Length; i++ ){
if( s[i] == '!' ){
list.Add(s.Substring(i,3));
i+= 2;
}
}
return list;
}
Обратите внимание, что это не удастся, если строка содержит! без как минимум двух других символов после него, поэтому вам, вероятно, следует выполнить тест, чтобы убедиться в этом, прежде чем фактически выполнить команду substring.