package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?:(?<=^)|(?<=\s))(?:(?:https?|ftp)://)?((?:[^\W_]|-)[^\W_]*(?:-[^\W_]*)*(?:\.(?:[^\W_]|-)[^\W_]*(?:-[^\W_]*)*)*\.[^\W_][^\W_]*)(?::\d+)?/(?:[\w~_.:/?#\[\]@!$&'*+,;=()-]*(?:(?:%[0-9a-fA-F][0-9a-fA-F])+[\w~_.:/?#\[\]@!$&'*+,;=()-]*)*)?(?=\s|$)`)
var str = `IP Address:
93.114.205.169
0.0.0.0
0.0.0.0
10.10.10.10
99.99.99.99
199.199.199.199
255.255.255.255
256.256.256.256
02.02.02.02
111.222.13.255
1.2.3.4
1.2.3.4.5
11.22.33.44
11.22.33.44.55
255.0.1.254
255.0.1.254
In a text 255.0.1.254 there is an IP address
In a text 10.10.10.10 there is an IP address
In a text 93.114.205.169 there is an IP address
Domain:
example.com
https://sub5-7.example.com/
https://sub5-7.example.com
sub.sub2.example.com
www.example.com
https://sub.example.com
http://example.com
ftp://sub.mit-example222.com
In a text www.example.com there is an domain.
In a text https://sub5-7.example.com there is an domain.
In a text www.example.com there is an domain.
URL
93.114.205.169:443/path
93.114.205.169/path
example.com/path
sub.example.com/path
93.114.205.169/path
https://sub5-7.example.com/
http://example.com/
example.com/
sub.example.com:443/
www.--example.com/
www.examp--le.com/
www.example.co/
www.example.c/
example.com/path
ftp://sub.mit-example222.com:8080//
ftp://sub.mit-example222.com/%12
sub.example.com/path
sub.example.com/path
sub.example.com:80/path
sub.example.com/path/path/path/p/a/q/1$%h
sub.example.com/path/path/path/p/a/q/1$%1f
sub.example.com/path/path/%aa%1f%3dpath/p/a/q/1$%1f111
https://sub.example.com/path/path
http://sub.example.com/path/path
http://something.com/#$SLJFHsdq32908432098=!~abc
In a text example.com/path there is an URL path.
In a text www.example.com/path there is an URL path.
In a text www.blog.example.com/path there is an URL path.
In a text sub.example.com/paththere is an URL path.
In a text sub.example.com/path/path/path/p/a/q/1$%h there is an URL path.
In a text sub.example.com/path/path/path/p/a/q/ there is an URL path.
`
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/