In the following regex what does "(?i)" and "?@" mean?
(?i)<.*?@(?P<domain>\w+\.\w+)(?=>)
I know that "?" means zero or one and that i sets case insensitivity.
This regex captures domains from an email address in a mailto field, but does not include the @ sign. It was generated the erex command from within SPLUNK 6.0.2
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)