import re
regex = re.compile(r"\<yes or no\. if yes, explain why\>|\<yes\/no\>", flags=re.IGNORECASE)
test_str = ("* Document with a Yes or No if your story impacts any of the following hazard types. If yes, explain why.\n"
"** Financial: <yes or no. If yes, explain why>\n"
"** Legal/Regulatory: <yes or no. If yes, explain why>\n"
"** Data Integrity: <yes or no. If yes, explain why>\n"
"** Patient Safety: <yes or no. If yes, explain why>\n"
"** CyberSecurity/Information Security: <yes or no. If yes, explain why>\n\n"
"* Engineer assigned to the project has added a +1 indicating that they discussed the impact this story has with regards to Hazards and agrees with the assessment. \n\n"
"- *Financial:* <yes or no. If yes, explain why>\n"
"- *Legal/Regulatory:* <yes or no. If yes, explain why>\n"
"- *Data Integrity:* <yes or no. If yes, explain why>\n"
"- *Patient Safety:* <yes or no. If yes, explain why>\n"
"- *CyberSecurity/Information Security:* <yes or no. If yes, explain why>\n\n"
"- *Financial:* <yes/no>\n"
"- *Legal/Regulatory:* <yes/no>\n"
"- *Data Integrity:* <yes/no>\n"
"- *Patient Safety:* <yes/no>\n"
"- *CyberSecurity/Information Security:* <yes/no>\n\n"
"- *Financial:* <yes or no. If yes, explain why>No\n"
"- *Legal/Regulatory:* <yes or no. If yes, explain why> Yes\n"
"- *Data Integrity:* No\n"
"- *Patient Safety:* Yes, this was an issue because of XYZ.\n"
"- *CyberSecurity/Information Security:* <yes or no. If yes, explain why>\n\n"
"- *Financial:* no\n"
"- *Legal/Regulatory:* no\n"
"- *Data Integrity:* no\n"
"- *Patient Safety:* no\n"
"- *CyberSecurity/Information Security:* no\n\n"
"- *Financial:* N\n"
"- *Legal/Regulatory:* N\n"
"- *Data Integrity:* N\n"
"- *Patient Safety:* N\n"
"- *CyberSecurity/Information Security:* N\n\n"
"- *Financial:* <yes or no. If yes, explain why>N\n"
"- *Legal/Regulatory:* <yes or no. If yes, explain why> N\n"
"- *Data Integrity:* <yes or no. If yes, explain why>N\n"
"- *Patient Safety:* <yes or no. If yes, explain why>N\n"
"- *CyberSecurity/Information Security:* <yes or no. If yes, explain why> N\n\n\n\n"
"- *Financial:* <yes or no. If yes, explain why>\n"
"- *Legal/Regulatory:* <yes or no. If yes, explain why>\n"
"- *Data Integrity:* <yes or no. If yes, explain why>\n"
"- *Patient Safety:* <yes or no. If yes, explain why>\n"
"- *CyberSecurity/Information Security:* <yes or no. If yes, explain why>\n\n"
"- *Financial:* <yes/no>\n"
"- *Legal/Regulatory:* <yes/no>\n"
"- *Data Integrity:* <yes/no>\n"
"- *Patient Safety:* <yes/no>\n"
"- *CyberSecurity/Information Security:* <yes/no>\n\n"
"- *Financial:* <yes or no. If yes, explain why>No\n"
"- *Legal/Regulatory:* <yes or no. If yes, explain why> Yes\n"
"- *Data Integrity:* No\n"
"- *Patient Safety:* Yes, this was an issue because of XYZ.\n"
"- *CyberSecurity/Information Security:* <yes or no. If yes, explain why>\n\n"
"- *Financial:* no\n"
"- *Legal/Regulatory:* no\n"
"- *Data Integrity:* no\n"
"- *Patient Safety:* no\n"
"- *CyberSecurity/Information Security:* no\n\n"
"- *Financial:* N\n"
"- *Legal/Regulatory:* N\n"
"- *Data Integrity:* N\n"
"- *Patient Safety:* N\n"
"- *CyberSecurity/Information Security:* N\n\n"
"- *Financial:* <yes or no. If yes, explain why>N\n"
"- *Legal/Regulatory:* <yes or no. If yes, explain why> N\n"
"- *Data Integrity:* <yes or no. If yes, explain why>N\n"
"- *Patient Safety:* <yes or no. If yes, explain why>N\n"
"- *CyberSecurity/Information Security:* <yes or no. If yes, explain why> N\n\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