title: Optional regex match for a group doesn't work
body: <p>I have the following sentence</p>
  
  <pre><code>#bb John can #20 jiang stone [voila]
  </code></pre>
  
  <p>I want my C# regex to give me 5 matches to my groups</p>
  
  <pre><code>#bb
  John Can
  20
  jiang stone
  voila
  </code></pre>
  
  <p>Of which the tokens in #bb and voila positions are optional.</p>
  
  <p>I used the following regex expression which works nicely in a sentence that doesn't have the first #bb - for e.g.</p>
  
  <pre><code>John can #20 jiang stone [voila]
  </code></pre>
  
  <p>gives me 4 correct tokens with the expression</p>
  
  <pre><code>@"(.*)#(\d+)(.*\s)(?:\[(.*)\])?"
  </code></pre>
  
  <p>Yet when I extend this with</p>
  
  <pre><code>@"(?:#[a-zA-Z])?(.*)#(\d+)(.*\s)(?:\[(.*)\])?"
  </code></pre>
  
  <p>It doesn't work. The #bb in the beginning of the sentence isn't matched as a separate token - instead I get a match as </p>
  
  <pre><code>b John Can
  </code></pre>
  
  <p>I've tried several variations but none give me an optional match to the first #.. match. What I want is that this can be #{1 or 2 characters} and this can be optional. I can have it, or it might be missing, in which case the rest should return the tokens.</p>
  
  <p>What's wrong with my regex?</p>
  
  <p>Thanks for your help</p>