Extraer variables de la expresión matemática de cadena

Quiero extraer variables de la expresión matemática usando c #. Escribí este código y funciona bien:

List<string> Variables = new List<string>();
string temp = string.Empty;
Console.WriteLine("Please enter ur expression");
string Expression = Console.ReadLine().Trim();
int Index;
for (Index = 0; Index <= Expression.Length - 1; Index++)
{
    if (char.IsLetter(Expression[Index]))
    {
        temp = temp + Expression[Index];
    }
    else
    {
        if (temp.Length > 0)
        {
            Variables.Add(temp);
            temp = string.Empty;
        }
    }
}
if (temp.Length > 0)
{
    Variables.Add(temp);
}
foreach (string item in Variables)
{
    Console.WriteLine(item);
}
Console.ReadKey();

Tengo que detectar SIN y COS de la expresión, así que eliminaré SIN y COS de las Variables.

¿Es bueno? ¿Es posible hacer esto con expresiones regulares o mejores formas? ¿Este código necesita ser refactorizado?

Después de extraer, quiero reemplazar las variables con valores de entrada y calcularé el resultado de la expresión.

Respuestas a la pregunta(3)

Su respuesta a la pregunta