import re
regex = re.compile(r"(?#remove next set of parenthesis and content because its only for simulating automod)(^|\W|\b)(?<!player\.)(?<!blog\.)(?<!dev\.)(?<!link\.)(?<!affiliate\.)(?<!meetups\.)(?<!help\.)(?<!safety\.)(?<!devstatus\.)(?<!brand\.)(?<!sings\.)(?<!music\.)twitch\.tv\/(?!embed(\/|\b)|subs(\/|\b)|directory(\/|\b)|p\/|user(\/|\b)|legal(\/|\b)|admin(\/|\b)|login(\/|\b)|signup(\/|\b)|jobs(\/|\b)|videos(\/|\b)|collections(\/|\b)|downloads(\/|\b)|turbo(\/|\b)|store(\/|\b)|creatorcamp(\/|\b)|settings(\/|\b)|giftcard(\/|\b)|redeem(\/|\b)|broadcast(\/|\b)|partner(\/|\b)|bits(\/|\b)|prime(\/|\b))(\w+)\/?(?!\S)(?#remove next set of parenthesis and content because its only for simulating automod)($|\W|\b)", flags=re.IGNORECASE | re.DOTALL)
test_str = ("https://www.twitch.tv/miametzmusic\n"
"https://www.twitch.tv/miametzmusic\n"
"https://twitch.tv/summit1g\n"
"https://twitch.tv/summit1g/\n"
"https://www.twitch.tv/subsp00ky\n"
"https://www.twitch.tv/subsp00ky/\n\n"
"https://player.twitch.tv/js/embed/v1.js\n"
"https://player.twitch.tv/?channel=miametzmusic&parent=www.example.com\n"
"https://www.twitch.tv/embed/miametzmusic/chat?parent=www.example.com\n"
"https://www.twitch.tv/subs\n"
"https://www.twitch.tv/subs/miametzmusic\n"
"https://www.twitch.tv/directory\n"
"https://www.twitch.tv/directory/all/tags/classical\n"
"https://www.twitch.tv/miametzmusic/about\n"
"https://www.twitch.tv/miametzmusic/schedule\n"
"https://www.twitch.tv/miametzmusic/videos\n"
"https://www.twitch.tv/videos/1821013434\n"
"https://www.twitch.tv/videos/1821013434?t=00h00m13s\n"
"https://www.twitch.tv/collections/EwAtC1IWzhY3Ww\n"
"https://www.twitch.tv/videos/1277407565?collection=EwAtC1IWzhY3Ww\n"
"https://www.twitch.tv/videos/1277407565?collection=EwAtC1IWzhY3Ww&t=00h00m52s\n"
"https://player.twitch.tv/?collection=EwAtC1IWzhY3Ww&video=1277407565&parent=www.example.com\n"
"https://player.twitch.tv/?collection=EwAtC1IWzhY3Ww&video=1277407565&time=0h2m27s&parent=www.example.com\n\n"
"https://www.twitch.tv/p/giftcard/\n"
"https://www.twitch.tv/p/about\n"
"https://www.twitch.tv/p/en/about/\n"
"https://blog.twitch.tv/\n"
"https://blog.twitch.tv/en/\n"
"https://blog.twitch.tv/en/archive/2023/\n"
"https://dev.twitch.tv/\n"
"https://dev.twitch.tv/products/\n"
"https://www.twitch.tv/downloads\n"
"https://www.twitch.tv/jobs\n"
"https://www.twitch.tv/jobs/en/\n"
"https://www.twitch.tv/turbo\n"
"https://www.twitch.tv/store\n"
"https://www.twitch.tv/creatorcamp\n"
"https://www.twitch.tv/creatorcamp/en/paths/\n"
"https://www.twitch.tv/settings/security\n"
"https://link.twitch.tv/devchat\n"
"https://affiliate.twitch.tv/\n"
"https://meetups.twitch.tv/\n"
"https://meetups.twitch.tv/events\n"
"https://help.twitch.tv/\n"
"https://help.twitch.tv/s/article/getting-started-twitch-studio\n"
"https://www.twitch.tv/giftcard/buy?ref_=gc_twitch_landing\n"
"https://www.twitch.tv/redeem\n"
"https://safety.twitch.tv/\n"
"https://safety.twitch.tv/s/article/Usernames\n"
"https://devstatus.twitch.tv/\n"
"https://devstatus.twitch.tv/uptime\n"
"https://www.twitch.tv/broadcast/studio\n"
"https://brand.twitch.tv/\n"
"https://brand.twitch.tv/downloads/twitch-brand-assets.zip\n"
"https://www.twitch.tv/partner/signup\n"
"https://www.twitch.tv/bits\n"
"https://www.twitch.tv/prime\n"
"https://sings.twitch.tv/\n"
"https://music.twitch.tv/")
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