title: Complex string splitting
body: <p>I have a string like the following:</p>
  
  <pre><code>[Testing.User]|Info:([Testing.Info]|Name:([System.String]|Matt)|Age:([System.Int32]|21))|Description:([System.String]|This is some description)
  </code></pre>
  
  <p>You can look at it as this tree:</p>
  
  <pre><code>- [Testing.User]
  - Info
          - [Testing.Info]
          - Name
                  - [System.String]
                  - Matt
          - Age
                  - [System.Int32]
                  - 21
  - Description
          - [System.String]
          - This is some description
  </code></pre>
  
  <p>As you can see, it's a string serialization / representation of a class <code>Testing.User</code></p>
  
  <p>I want to be able to do a split and get the following elements in the resulting array:</p>
  
  <pre><code> [0] = [Testing.User]
   [1] = Info:([Testing.Info]|Name:([System.String]|Matt)|Age:([System.Int32]|21))
   [2] = Description:([System.String]|This is some description)
  </code></pre>
  
  <p>I can't split by <code>|</code> because that would result in:</p>
  
  <pre><code> [0] = [Testing.User]
   [1] = Info:([Testing.Info]
   [2] = Name:([System.String]
   [3] = Matt)
   [4] = Age:([System.Int32]
   [5] = 21))
   [6] = Description:([System.String]
   [7] = This is some description)
  </code></pre>
  
  <p>How can I get my expected result?</p>
  
  <p>I'm not very good with regular expressions, but I am aware it is a very possible solution for this case.</p>