Contains method in lambda expression
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
        }
    }
}