title: Lazy quantifier in .NET regular expression
body: <p>I tried the following regex replacement:</p>
  
  <pre><code>Regex.Replace("one, two, three, ", ",([.*?]),\s$", ", and$1.");
  </code></pre>
  
  <p>Which returns</p>
  
  <pre><code>"one, and two, three."
  </code></pre>
  
  <p>Looking for:</p>
  
  <pre><code>"one, two, and three."
  </code></pre>
  
  <p>I have a regex that can do this. I don't need help there.</p>
  
  <p>My question: Doesn't the lazily quantified <code>.*?</code> mean it will match as few as possible? If it did (obviously it didn't), it would stop matching at the comma after "two". Does it instead find the first match possible starting from the start of the string?</p>
  
  <p><strong>Update:</strong></p>
  
  <p>first line should read:</p>
  
  <pre><code>Regex.Replace("one, two, three, ", ",(.*?),\s$", ", and$1.");
  </code></pre>