например, делать partition по %(port)s и re.search(re.escape(parts[0]) + '([0-9]+)' + re.escape(parts[-1]) ...