import re
regex = re.compile(r"bureaux? (à l'[eé]tage|[ée]quip[ée]s?|cloisonn[ée]s)", flags=re.MULTILINE)
test_str = ("REGEX_1 =(avec|(partie|à usage|compos[ée]) de|(possibilit[eé]|zone|espace)(\\sde)?) bureaux?\n\n"
"REGEX_2 =\\d*((\\s)?[m²|m|M]) de bureaux?|bureaux? d'une surface de (\\d*)((\\s)?[m²|m|M])|bureaux? de (\\d*)((\\s)?[m²|m|M])\n\n"
"REGEX_3 =bureaux? (à l'[eé]tage|[ée]quip[ée]s?|cloisonn[ée]s)\n\n"
"REGEX_2NOT = \n"
"(proche de bureaux?| \n"
"bureaux? proche|\n"
"bureaux? [àa] proximit[eé]| \n"
"[àa] proximit[eé] de bureaux?)\n\n"
"[EXEMPLE]\n"
"avec bureau\n"
"à usage de bureaux\n"
"composé de bureau\n"
"d'activites & bureaux\n"
"activités/bureaux \n"
"une partie de bureau\n"
"et bureau\n"
"et de bureau \n"
"12m² de bureaux\n"
"de bureaux de 12m²\n"
"bureaux d'une surface de 12m²\n"
"bureaux à l'étage\n"
"bureaux équipés\n"
"zone bureau\n"
"bureaux cloisonnés\n"
"possibilité de bureau\n"
"espace bureau\n\n\n\n"
"[NE PAS TENIR COMPTE]\n"
"bureaux proche\n"
"bureaux à proximité \n"
"à proximité de bureau")
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