package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)(?x) # Free spacing mode, to allow comment and better view
# Matching the first line `i5-2520M` (capture group 1)
([^ ]+\s*)(?=CPU\s*@)
# Matching the first line `2.50GHz` (capture group 2)
|(?<=CPU\s@)(\s*\d+.\d+GHz)
# Matching the `first word` on the second line. (capture group 3)
# The `\s*$` is used to not match empty lines.
|(^[^ ]+)(?!(?:.*CPU\s*@)|\s*$)
# Matching the second line `CPU T2400` (capture group 4)
|(?<=CPU)(\s*[^ ]+\s*)(?=@)
# Matching the second line `1.83GHz` (capture group 5)
|\s*(?<=@)(\s*\d+.\d+GHz)`)
var str = `Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
Genuine Intel(R) CPU T2400 @ 1.83GHz
`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Golang, please visit: https://golang.org/pkg/regexp/