import re
regex = re.compile(r"^.*(?:EVENTS:OB:\s(?:RECORDS\snot|RECORDS\sthat|Unprocessed))(?!.*0\.0$).*$", flags=re.MULTILINE | re.IGNORECASE)
test_str = ("EVENTS:OB: Records not updated to status\n"
"EVENTS:OB: Records that were pending OR to be processed for yester day. \n"
"EVENTS:OB: Unprocessed records older than hour. \n"
"RENAS:OB:BOX: Unprocessed records older than hour. \n"
"RENAS:MOSS Pending \n"
"RENAS:TIGNET Pending \n"
"RENAS:OB:SI: Unprocessed records older than hour. \n"
"RENAS:OB:GC: Unprocessed records older than hour. \n"
"RENAS:RENAS:Count of pending message to process. \n"
"RENAS:OB:10+2_Status: Unprocessed records older than hour.\n"
"RENAS:RENAS_10+2:Unprocessed records in RENAS 10+2\n"
"RENAS:RENAS ACH:Count of pending message to process to FV.\n"
"RENAS:CheckNow:Count of pending message to process to FV\n"
"RENAS:OB:GB: Unprocessed records older than hour.\n"
"RENAS:RENAS: UN Processed records by MIXX for RENAS INSTRUCTONS \n"
"RENAS:RENAS: UN Processed records by MIXX for RENAS Break Bulk \n"
"RENAS:RENAS: UN Processed records by MIXX for RENAS \n"
"RENAS:OB:DOM:Unprocessed count of records older than hour.\n"
"RENAS:OB:DOM:Failed records in the database for previous date.\n"
"RENAS:OB:SI:Records that were pending to be processed for the previous day.")
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