import re
regex = re.compile(r"\(*(\w{3})[-_~\s*\.]*?(\d{1,}|\d*.\d*.\d*)[-_\s.~]*?(FTP|IMG|SCR|LIV|TVU).?-?\s?(\w{3}).\s?-?_?~?\.?(\d*).\s?-?~?_?\.?(.*)", flags=re.MULTILINE)
test_str = ("((NWS_20-12-19_FTP_VLR_01_This is a test message))\n"
"(NWS 11219 LIV TNL 02 Second test message)\n"
"(((NWS~11/12/2019~IMG-KNK-4-third_test_message)))\n"
"(NWS-12-12-19-SCR-TVM-03-Fourth-test-message))\n"
"((NWS - 12.12.2019 - FTP - CGP -5 - fifth test message)\n"
"(NWS_12.12/19~FTP-CHN 01_sixth test message ")
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