title: golang regexp FindStringSubmatch() doesn't return the correct last group
body: <p>I am using go1.10 darwin/amd64, here is the code:</p>
  
  <pre><code>package main
  
  import (
      "fmt"
      "regexp"
  )
  
  func main() {
      raw := "012 abc 012"
      r := regexp.MustCompile(`(\d+).*(\d+)`)
      m := r.FindStringSubmatch(raw)
      fmt.Printf("len(m)=%v\n%v\n%v\n%v\n", len(m), m[0], m[1], m[2])
  }
  </code></pre>
  
  <p>Output is:</p>
  
  <blockquote>
    <p>len(m)=3 </p>
    
    <p>012 abc 012</p>
    
    <p>012</p>
    
    <p>2</p>
  </blockquote>
  
  <p>You can also run it here: <a href="https://play.golang.org/p/i2zlhClB72e" rel="nofollow noreferrer">https://play.golang.org/p/i2zlhClB72e</a></p>
  
  <p>I expect that the output of m[2] is "012" but not "2". </p>
  
  <p>Can anyone let me know where the issue is? Thanks very much.</p>