Contains method in lambda expression I use this method to extract table name and field name from formula.

public List&lt;string&gt; ExtractFieldsFromFormula(string formula)
{
    List&lt;string&gt; formulas = new List&lt;string&gt;();
    formulas.AddRange(formula.Split(new char[] {'{', '}'}).Where(f=&gt;!f.Contains("+") &amp;&amp; !f.Contains("-")&amp;&amp;!f.Contains("/")&amp;&amp;!f.Contains("*")&amp;&amp; !f.Contains("(")&amp;&amp; !f.Contains(")") &amp;&amp; f.Trim()!=String.Empty));
    return formulas;
}


my formula is like this:


  "{City.a}+5*(2/{City.b})"


and result of method is a list :


City.a
City.b


how can i write this code better than this?!!
And there's always a place for a regular expression (especially when searching for a pattern in a string of characters ;-)).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            string pattern = @"\{(?&lt;expr&gt;[a-zA-Z0-9.]+?)\}";
            string formula = @"{City.a}+5*(2/{City.b})";


            var matches = Regex.Matches(formula, pattern).OfType&lt;Match&gt;();
            foreach (var match in matches)
            {
                Console.WriteLine(match.Groups["expr"]);
            }
            // prints
            // City.a
            // City.b

            string splitPattern = @"\{(?&lt;object&gt;[a-zA-Z0-9]+?)\.(?&lt;field&gt;[a-zA-Z0-9]+?)\}";

            matches = Regex.Matches(formula, splitPattern).OfType&lt;Match&gt;();
            foreach (var match in matches)
            {
                Console.WriteLine("Object: {0}   Field: {1}", match.Groups["object"], match.Groups["field"]);
            }

            // prints
            // Object: City   Field: a
            // Object: City   Field: b
        }
    }
}