Why don't you use regex capturing?
The pattern \[l=(\d);f=(\d);r=(\d);p=(\d)\] will capture the values in each array.
Example:
private static IEnumerable<dynamic> Match(string text)
{
return Regex.Matches(text, @"\[l=(\d);f=(\d);r=(\d);p=(\d)\]")
.Cast<Match>()
.Where(m => m.Success)
.Select(m => new { l = m.Groups[1].Value, f = m.Groups[2].Value, r = m.Groups[3].Value, p = m.Groups[4].Value });
}
static void Main(string[] args)
{
foreach (var result in Match("[l=9;f=0;r=5;p=2];[l=9;f=0;r=6;p=2]"))
Console.Out.WriteLine("Setting: {0}, {1}, {2}, {3}", result.l, result.f, result.r, result.p);
foreach (var result in Match("[l=9;f=0;r=5;p=2]"))
Console.Out.WriteLine("Setting: {0}, {1}, {2}, {3}", result.l, result.f, result.r, result.p);
}
Regexsyntax? show us result you want to getDictionary<string,int>?