import re
regex = re.compile(r"^\s*(.*?)\s+\(([^)]+)\):\s*(.*?)(?:\n\n|\Z)", flags=re.MULTILINE | re.DOTALL)
test_str = ("\n"
"Peter (08:16): \n"
"Hi \n"
"What's up? \n"
";-D\n\n"
"Anji Juo (09:13): \n"
"Hey, I'm using WhatsApp!\n\n"
"Peter (11:17):\n"
"Could you please tell me where is the feedback?\n\n"
"Anji Juo (19:13): \n"
"I don't know where it is. \n\n"
"Anji Juo (19:14): \n"
"Do you by any chance know where I can catch a taxi ?\n"
"🙏🙏🙏")
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