title: C# regex optional group not working
body: <p>I am trying to get parts from these strings:
  first:<br />
  2F4449534301224E4F204445534352495054494F4E20415641494C41424C45011F30303034342D30313230382D<br />
  second:<br />
  2F4449534301224E4F204445534352495054494F4E20415641494C41424C45011F30303130312D3032323534012630303130312D31303932342D<br /></p>
  
  <p>basically I want to return for both strings:
  first:<br />
  2F(.+)011F(.+)2D<br />
  second:<br />
  2F(.+)011F(.+)0126(.+)2D<br /></p>
  
  <p>I am trying to use this pattern:</p>
  
  <pre><code>Match m = Regex.Match(this.__line, 
                        @"^2F.*22(.*)011F(.*)(0126.*)?.{2}$", 
                        RegexOptions.IgnoreCase);
  </code></pre>
  
  <p>However, when I try:</p>
  
  <pre><code>if (m.Success)
  {
      if (m.Groups[3].Value != "")
      {
          Console.WriteLine("good");
      }
  }
  else
  {
      Console.WriteLine("bad");
  }
  </code></pre>
  
  <p>I get "bad" from the second string because it is not matching the pattern. Am I not using the correct pattern?</p>