fork download
  1. using System;
  2. using System.Text.RegularExpressions;
  3.  
  4. namespace RegexTest
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. string re = @"(?xi)
  11. { (?'name' \w+ ) : # start of tag
  12. (?'value' # named capture
  13. (?> # don't backtrack
  14. (?:
  15. [^{}]+ # not brackets
  16. | (?'open' { ) # count opening bracket
  17. | (?'close-open' } ) # subtract closing bracket (matches only if open count > 0)
  18. )*
  19. )
  20. (?(open)(?!)) # make sure open is not > 0
  21. )
  22. } # end of tag
  23. ";
  24. string str = @"This is {name1:value1}{name2:{name3:even dipper {name4:valu4} dipper} some inner text} text";
  25.  
  26. foreach (Match m in Regex.Matches(str, re))
  27. {
  28. Console.WriteLine("name: {0}, value: {1}", m.Groups["name"], m.Groups["value"]);
  29. }
  30. }
  31. }
  32. }
Success #stdin #stdout 0.08s 34224KB
stdin
Standard input is empty
stdout
name: name1, value: value1
name: name2, value: {name3:even dipper {name4:valu4} dipper} some inner text