title: Regex lazy vs greedy confusion
body: <p>I'm a little confused about regular expressions and greedy vs lazy. It's really very simple and it feels like I'm missing something obvious.</p>
  
  <p>I've simplified my problem as much as I can to make it clear. Consider the following string and regex pattern.</p>
  
  <pre><code>string:
  aaxxxb
  
  pattern:
  (?&lt;=a)(.*?)(?=b)
  
  result:
  axxx
  
  what I expected:
  xxx
  </code></pre>
  
  <p>This result is what I would expect from using .* instead of .*?, what am I missing?</p>
  
  <p>Obviously, same thing if I use a.*?b gives me aaxxxb. Why is this? Shouldn't lazy (like .*?) return as few characters as possible?</p>