demo here : https://regex101.com/r/hE9gB4/1
(?i)<.*?@(?P<domain>\w+\.\w+)(?=>)
its actually getting your domain name from the email id:
(?i)
makes it match case insensitive and
?@
is nothing but @
which matches the character @
literally.
the ?
in your ?@
is part of .*?
which we call as a lazy operator, It will give you the text between the <
and @
if you dont use the ?
after the .*
it will match everything after <
to the end. ( we call this as the greedy operator)