public int Apply(string s, Hashtable result) { Regex r = new Regex(regex); Match match = r.Match(s); if (match.Success) { if (result != null) { result.Add(Filter.FILTER_NAME, inputFilter.Filter_name); result.Add(Filter.DISPLAY_NAME, inputFilter.Display_name); } inputFilter.Relations(); ArrayList inputfilterFilds = inputFilter.Fields; GroupCollection gc = match.Groups; int i = 1; foreach (Group g in gc) { if (g.Index > 0) { InputFilterField fields = inputFilter.Fields[i++] as InputFilterField; result.Add(fields.Name.Trim(), g.Value); } } } return(Filter.PARSE_OK); }