using System; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var str = "/1-XXXX/2-YYYY/9-ZZZZ/1-AAAA/3-BBBB/5-CCCC/8=NNNN/9=DDDD/1-QQQQ/2-WWWW/3=PPPP/7-EEEE"; var res = Regex.Matches(str, @"(?1)-(?'fldData'[^/]+)(?:/(?[2-9])[-=](?'fldData'[^/]+))*") .Cast() .Select(p => p.Groups["fldNo"].Captures.Cast().Select(m => m.Value) .Zip(p.Groups["fldData"].Captures.Cast().Select(m => m.Value), (first, second) => first + "=" + second)) .ToList(); foreach (var t in res) Console.WriteLine(string.Join(" ", t)); } }