fork download
  1. using System;
  2. using System.Text.RegularExpressions;
  3.  
  4. public class Test
  5. {
  6. public static void Main()
  7. {
  8. var pattern = @"^(?=\d+[a-z]+(?:-\d+[a-z]+)*$)(?>(?<gal>\d+)gal-?)?(?>(?<qt>\d)+qt-?)?(?>(?<pt>\d+)pt-?)?(?>(?<cup>\d+)cup-?)?(?>(?<oz>\d+)oz-?)?$";
  9. string[] strings = {"1gal-1qt-2pt-2cup-5oz", "1gal-6oz", "1gal"};
  10. foreach (string s in strings) {
  11. var regex = new Regex(pattern);
  12. GroupCollection groups = regex.Match(s).Groups;
  13.  
  14. foreach (string groupName in regex.GetGroupNames())
  15. {
  16. Console.WriteLine("Group: {0}, Value: {1}", groupName, groups[groupName].Value);
  17.  
  18. }
  19. Console.WriteLine("====================================");
  20. }
  21. }
  22. }
  23.  
Success #stdin #stdout 0.06s 26872KB
stdin
Standard input is empty
stdout
Group: 0, Value: 1gal-1qt-2pt-2cup-5oz
Group: gal, Value: 1
Group: qt, Value: 1
Group: pt, Value: 2
Group: cup, Value: 2
Group: oz, Value: 5
====================================
Group: 0, Value: 1gal-6oz
Group: gal, Value: 1
Group: qt, Value: 
Group: pt, Value: 
Group: cup, Value: 
Group: oz, Value: 6
====================================
Group: 0, Value: 1gal
Group: gal, Value: 1
Group: qt, Value: 
Group: pt, Value: 
Group: cup, Value: 
Group: oz, Value: 
====================================