import re
regex = re.compile(r"(?!<(script|code)[^>]*?>)((\s)(\?|\!|\;|\:))(?![^<]*?<\/(script|code)>)", flags=re.IGNORECASE)
test_str = ("<h2>Déroulement de votre examen radiologique ?</h2>\n"
"<p>test De l’accueil dans nos locaux à la remise des résultats, toute l’équipe Radiolor, médecins radiologues, manipulateurs et secrétaires, reste à votre service et met tout en œuvre pour que votre temps d’attente soit 66 limité et que votre examen se déroule dans les meilleures conditions. Tous les gestes médicaux sont <a>réalisés dans les conditions d’hygiène strictes ; et : dans </a>le respect des bonnes pratiques.</p>\n"
"<p>À votre arrivée , nous vous remercions de passer par le secrétariat et de vous munir de votre ordonnance et de votre carte vitale !.<br />\n"
"N’oubliez pas vos anciens examens et <strong>respectez les consignes</strong> qui vous ont été transmises lors de votre prise de <code>rendez-vous : </code>prise de sang, éventuel produit de contraste ou d’infiltration prescrit ?.</p>\n"
"<!-- meta slider -->\n"
"test\n"
"</div>\n\n"
"<script type=\"text/javascript\">\n"
"var timer_metaslider_144 = function() {\n"
" var slider = ;!window.jQuery ? window.setTimeout(timer_metaslider_144, 100) : !jQuery.isReady ? window.setTimeout(timer_metaslider_144, 1) : metaslider_144(window.jQuery);\n"
" };\n"
" timer_metaslider_144();\n"
"</script>")
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