匹配数据库DSN
[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN]
`^(?:(?P<username>[^:@]+)(?::(?P<password>[^@]+))?@)?(?:(?P<protocol>[^()/:]+)(?:\((?P<address>[^)]+)\))?)?\/(?P<dbname>[^?]+)?(?:\?(?P<params>[^#]+))?(?:#(?P<fragment>.*))?`
func doMatch(dsn string) map[string]string {
re := regexp.MustCompile(pattern)
match := re.FindStringSubmatch(dsn)
result := make(map[string]string)
for i, name := range re.SubexpNames() {
if i != 0 && name != "" {
result[name] = match[i]
}
}
return result
}