using System.Text.RegularExpressions;
public static void Main()
string s = "[2] EFG | 6.9 mm";
int n = s.Split('|').Length / 2;
string pat = @"(?<!\S)(?<name>\w+)(?=(?:[^|]*\|){" + n + @"}\s*\b(?<value>[0-9]+(?:\.[0-9]+)?)\s+(?<unit>[^0-9\s]\S*))";
var ItemRegex = new Regex(pat, RegexOptions.Compiled);
var OrderList = ItemRegex.Matches(s).Cast<Match>().Select(m => new
Name = m.Groups["name"].ToString(), Value = Convert.ToDouble(m.Groups["value"].ToString()), Unit = m.Groups["unit"].ToString(), }).ToList();
Console.WriteLine(String.Join("; ", OrderList));