如何以这种方式分割字符串?

I need to split a string like "aa bb cc dd ee ff" in golang to

["aa bb" "bb cc" "cc dd" "dd ee" "ee ff"]

I'm trying this:

re := regexp.MustCompile("[a-z]+\\s+[a-z]+")
fmt.Printf("%q
", re.FindAllString("aa bb cc dd ee ff", -1))

But it returns:

["aa bb" "cc dd" "ee ff"]

For example,

package main

import (
    "fmt"
    "strings"
)

func pairs(s string) []string {
    var p []string
    fs := strings.Fields(s)
    if len(fs) >= 2 {
        p = make([]string, 0, len(fs)-1)
        for i, f := range fs[1:len(fs)] {
            p = append(p, fs[i]+" "+f)
        }
    }
    return p
}

func main() {
    s := "aa bb cc dd ee ff"
    fmt.Printf("%q
", s)
    p := pairs(s)
    fmt.Printf("%q
", p)
}

Output:

"aa bb cc dd ee ff"
["aa bb" "bb cc" "cc dd" "dd ee" "ee ff"]

You forget to say that it's a repeating pattern:

([a-z]+\\s+[a-z]+)*


The solution ((?=([a-z]{2}\s+[a-z]{2})*)) needs lookahead which is not available in go