import re
regex = re.compile(r"(?:[a-z0-9+!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])", flags=re.IGNORECASE)
test_str = ("[a-zA-Z0-9-_.+]+@[a-zA-Z0-9-_.]+\n\n"
"ekoprasetyo.crb@outlook.com\n"
"db.maulana@gmail.com.\n"
" dee.wien@yahoo.com. .\n"
"\"deninainggolan@yahoo.co.id\" \n"
"Fajar.rohita@hotmail.com klaas knot (firmansya1404@gmail.aero); \n"
"dydmm, sss <fransisca+jw@gmail.com>, donny_tri_wardono@yahoo.co.id thank a\n"
"\"Helpdesk | Energiem**ine\" <helpdesk@ene---ine.nl>\n"
"invalid: John..Doe@example.com \n"
"valid: John.Doe@example.com\n\n"
"Valid addresses from https://en.wikipedia.org/wiki/Email_address\n"
"simple@example.com\n"
"very.common@example.com\n"
"FirstName.LastName@EasierReading.org\n"
"x@example.com\n"
"long.email-address-with-hyphens@and.subdomains.example.com\n"
"user.name+tag+sorting@example.com\n"
"name/surname@example.com\n"
"admin@example\n"
"example@s.example\n"
"\" \"@example.org\n"
"\"john..doe\"@example.org\n"
"mailhost!username@example.org\n"
"\"very.(),:;<>[]\\\".VERY.\\\"very@\\\\ \\\"very\\\".unusual\"@strange.example.com\n"
"user%example.com@example.org\n"
"user-@example.org\n"
"postmaster@[123.123.123.123]\n"
"postmaster@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]\n"
"_test@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]")
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