package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)^\s+(?P<user>[\w[:print:]]+) [\w\-\.]+ [[:print:]]+ ?\(v[\w\.]+\) \([\w\-\.]+\/\d+ \d+\)\, start \w+ \d+\/\d+ \d+\:\d+(\,\s(?P<licenses>\d+)\s\w+|)(\s+\(linger\:\s\d+\s\/\s\d+\))?$`)
var str = `
userone host01 :78 APS Base (v19.100) (licserver/27010 7401), start Thu 5/14 15:31, 2 licenses
userone host01 :78 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 7501), start Thu 5/14 15:31, 4 licenses
userone host01 :75 APS Base (v19.100) (licserver/27010 18901), start Thu 5/14 15:33, 2 licenses
userone host01 :75 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 19001), start Thu 5/14 15:33, 4 licenses
userone host01 :76 APS Base (v19.100) (licserver/27010 18702), start Thu 5/14 15:34, 2 licenses
userone host01 :76 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 17002), start Thu 5/14 15:34, 4 licenses
userone host01 :77 APS Base (v19.100) (licserver/27010 23302), start Thu 5/14 15:34, 2 licenses
userone host01 :77 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 23801), start Thu 5/14 15:34, 4 licenses
userone host01 :60 APS Base (v19.100) (licserver/27010 23901), start Thu 5/14 15:34, 2 licenses
userone host01 :60 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 24001), start Thu 5/14 15:34, 4 licenses
userone host01 :68 APS Base (v19.100) (licserver/27010 25501), start Thu 5/14 15:34, 2 licenses
userone host01 :68 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 25601), start Thu 5/14 15:34, 4 licenses
userone host01 :58 APS Base (v19.100) (licserver/27010 22803), start Thu 5/14 15:34, 2 licenses
userone host01 :58 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 27801), start Thu 5/14 15:34, 4 licenses
useronexr host01 :51 Spectre X Base (v19.100) (licserver/27010 61140), start Sat 5/16 13:41, 3 licenses
useronexr host01 :52 Spectre X Base (v19.100) (licserver/27010 31125), start Sat 5/16 13:43, 3 licenses
useronexr host01 :76 Spectre X Base (v19.100) (licserver/27010 53463), start Sat 5/16 13:47, 3 licenses
useronexr host01 :69 Spectre X Base (v19.100) (licserver/27010 41523), start Sat 5/16 13:47, 3 licenses
useronexr host01 :51 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 46233), start Sat 5/16 14:08, 6 licenses
useronex host01 :52 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 32328), start Sat 5/16 14:10, 6 licenses
useronex host01 :69 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 10953), start Sat 5/16 14:16, 6 licenses
useronex host02 :76 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 32114), start Sat 5/16 14:17, 6 licenses
useronexr host02 localhost:10 APS Base (v19.100) (licserver/27010 31935), start Sun 5/17 10:18, 2 licenses
useronexr host02 localhost:10 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 6614), start Sun 5/17 10:21, 4 licenses
`
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/