package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)^(?:(?:(jdbc)\:{1})?(?:(\w+):/{2})?(?:([^@\/?!\"':#\s]+(?::\w+)?)@)?)?(?:([^@\/?!\"':#\s]+(?::\d+)?)(?=(?:$)|(?:/)))?(?:/([^@?!\"':#\s]*)(?=(?:$)|(?:\?)))?(?:[?]([^#?!\s]+))?\S*$`)
var str = `postgresql://
postgresql://localhost
postgresql://localhost:5432
postgresql://localhost/mydb
postgresql://user@localhost
postgresql://user:secret@localhost
postgresql://user:secret@localhost:1533
postgresql://user:secret@localhost:1533/
postgresql://user:secret@localhost:1533/db?
postgresql://user::se:::cret@localhost::port
postgresql://user::secret@local::host::po::::rt/dd::b:::b
postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
postgresql://localhost/mydb?user=other&password=secret
jdbc:postgresql://localhost
jdbc:postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
jdbc:postgresql://other@localhost:5432/otherdb?connect_timeout=10&application_name=myapp
jdbc:postgresql://other:pass@localhost:5432/otherdb?connect_timeout=10&application_name=myapp
jdbc:postgresql://other:pass@localhost:5432/other/db?connect_timeout=10&application_name=myapp
jdbc:postgresql://other:pass@localhost:5432/other/db??connect_timeout=10&application_name=myapp
jdbc:postgresql://other::pass@localhost::5432/oth:erdb?connect_timeout=10&application_name=myapp
""''":::abc;
postgresql://127.0.0.1::5432
127.0.0.1::5432
localhost
user@localhost
user@localhost:1533
user@localhost:1533/db
user@localhost:1533/db?
user:secret@localhost
user:secret@localhost/db
user:secret@localhost/db?
user:secret@local:host/otherdb
user:secret@local:1533/othe1//db
user:secret@localhost/otherdb?connect_timeout=10&application_name=myapp
user:secret@localhost/other/db?connect_timeout=10&application_name=myapp
user:secret@localhost/other/db??connect_timeout=10&application_name=myapp
us""er:se::cret@loca''lhost
user:secret@local:1533/otherdb
jdbc:postgresql://user:secret@localhost:1533/otherdb
jdbc:postgresql://user:secret@@localhost:1533/otherdb
jdbc:postgresql://user:secret@localhost:1533/otherdb?
jdbc:postgresql://:secret@localhost:1533/otherdb?
jdbc:postgresql://user:secret@:1533/otherdb?
jdbc:postgresql://user:secret@localhost:1533/@otherdb?
jdbc:postgresql://user:secret@localhost/otherdb?connect_timeout=10&application_name=myapp
jdbc:postgresql://user:secret@localhost:1533/otherdb?connect_timeout=10&application_name=myapp
jd''bc:post""gresql://us..er:sec,,ret@localh++ost/ot+-herdb?connect_timeout=10&application_name=myapp`
var substitution = "$1 \n$2 \n$3 \n$4 \n$5 \n---\n"
fmt.Println(re.ReplaceAllString(str, substitution))
}
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/