import re
regex = re.compile(r"(https://github\.com/)?(?P<namespace>[^/\s]+)\/(?P<repo>[^#\s]+)(#|/pull/)(?P<pr_id>\d+)", flags=re.MULTILINE)
test_str = ("/packit-dev test --identifier my-id-1 --labels label1,label2 namespace-1/repo-1#33\n"
"/packit-dev test namespace-2/repo-2#36 --identifier my-id-2\n"
"/packit-dev test namespace-2/repo-2#36 --labels label1 --identifier my-id-2\n"
"/packit-dev test namespace-2/repo-2#36 --labels label1 --id my-id-2\n"
"/packit-dev test namespace-2/repo-2#36 --labels label1 -i my-id-2\n"
"/packit-dev test namespace-2/repo-2#36 --labels label1 -i my-id-2 \n"
"/packit-dev test namespace-2/repo-2#36 --env INSTALL_TYPE=bundle --labels label1\n"
"/packit-dev test namespace-2/repo-2#36 --env INSTALL_TYPE= --labels label1\n"
"/packit-dev test https://github.com/kontura/librepo/pull/4\n"
"/packit-dev test https://github.com/namespace-3/repo-3/pull/42 --identifier my-id-3\n"
"/packit-dev test --labels label1,label2 https://github.com/namespace-4/repo-4/pull/99")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
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 Python, please visit: https://docs.python.org/3/library/re.html