using System; using System.Text.RegularExpressions; using System.Linq; public class Test { public static void Main() { var s = "lat range: 49.000000 to 50.000000 actual lat 49.212059 lon range: 16.000000 to 17.000000 actual lon 16.626276"; var pattern = @"actual (?lat|lon) (?\d+\.\d{1,6})|(?\d+\.\d{1,6}) (?lat|lon)"; var results = Regex.Matches(s, pattern) .Cast() .ToDictionary( m => m.Groups["type"].Value, m => m.Groups["val"].Value); foreach (var kv in results) Console.WriteLine("'{0}': '{1}'", kv.Key, kv.Value); } }