Python (re)

Generic Connection String (URL Form) in PY

Parse generic URL-form connection strings: `protocol://[user[:pass]@]host[:port][/database]`.

Try it in the PY tester →

Pattern

regexPY
([a-zA-Z][\w+\-.]*):\/\/(?:([^:@\s]+)(?::([^@\s]*))?@)?([^:\/\s]+)(?::(\d+))?(?:\/([^?\s]*))?   (flags: g)

Python (re) code

pyPython
import re

pattern = re.compile(r"([a-zA-Z][\w+\-.]*):\/\/(?:([^:@\s]+)(?::([^@\s]*))?@)?([^:\/\s]+)(?::(\d+))?(?:\/([^?\s]*))?")
input_text = "postgres://admin:s3cret@db.example.com:5432/main"
for m in pattern.finditer(input_text):
    print(m.group(0))

Stdlib `re` module — no third-party dependency. Works on Python 3.6+.

How the pattern works

Group 1 captures the scheme (postgres, mysql, redis, mongodb, kafka, etc.). The optional auth section captures user and optional password. Group 4 is the host. Optional port and path captures follow. This is a working starting point for parsing many SaaS connection strings; for production use a real URL parser.

Examples

Input

postgres://admin:s3cret@db.example.com:5432/main

Matches

  • postgres://admin:s3cret@db.example.com:5432/main

Input

kafka://broker.internal:9092

Matches

  • kafka://broker.internal:9092

Input

no connection here

No match

Same pattern, other engines

← Back to Generic Connection String (URL Form) overview (all engines)