常用正则表达式集锦

匹配数据库DSN

[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=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
}