package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?ms)^PING\b[^(]*\(([^)]*)\)\s([^.]*)\..*?^(\d+\sbytes).*?icmp_seq=(\d+).*?ttl=(\d+).*?time=(.*?ms).*?(\d+)\spackets\stransmitted.*?(\d+)\sreceived.*?(\d+%)\spacket\sloss.*?time\s(\d+ms).*?=\s([^\/]*)\/([^\/]*)\/([^\/]*)\/(.*?)\sms`)
var str = `PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.50 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.42 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=51.2 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=1.41 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=1.39 ms
64 bytes from 192.168.1.1: icmp_seq=6 ttl=64 time=89.0 ms
64 bytes from 192.168.1.1: icmp_seq=7 ttl=64 time=1.90 ms
64 bytes from 192.168.1.1: icmp_seq=8 ttl=64 time=9.15 ms
64 bytes from 192.168.1.1: icmp_seq=9 ttl=64 time=1.37 ms
64 bytes from 192.168.1.1: icmp_seq=10 ttl=64 time=1.36 ms
--- 192.168.1.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 1807ms
rtt min/avg/max/mdev = 1.360/15.966/88.970/28.436 ms, ipg/ewma 200.746/11.066 ms
`
if len(re.FindStringIndex(str)) > 0 {
fmt.Println(re.FindString(str),"found at index",re.FindStringIndex(str)[0])
}
}
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/