Fermez la balise, s’il vous plaît !
En parallèle, vous travaillez sur un autre de vos projets. L’entreprise va développer un nouveau produit pour aider les développeurs à vérifier automatiquement le code qu’ils écrivent. Vous devez écrire un petit script qui contrôle que chaque balise HTML ouverte est correctement fermée.
Voici un exemple de chaîne contenant des balises HTML :
<title>The Data Science Company</title>
Vous apprenez qu’une balise HTML ouvrante se trouve toujours au début de la chaîne. Elle apparaît entre <>. Une balise fermante apparaît également entre <>, mais elle est précédée de /.
Vous vous souvenez aussi que les groupes capturants peuvent être référencés par des numéros, par exemple \4.
La liste html_tags, qui contient trois chaînes avec des balises HTML, ainsi que le module re, sont chargés dans votre session. Vous pouvez utiliser print() pour afficher les données dans l’IPython Shell.
Cet exercice fait partie du cours
<cours>Expressions rationnelles en Python</cours>Instructions de l’exercice
- Complétez la regex afin de faire correspondre les balises HTML correctement fermées. Recherchez une correspondance dans chaque chaîne de la liste
html_tags. Affectez le résultat àmatch_tag. - Si une correspondance est trouvée, affichez le premier groupe capturé et enregistré dans
match_tag. - Si aucune correspondance n’est trouvée, complétez la regex pour ne faire correspondre que le texte à l’intérieur de la balise HTML. Affectez-la à
notmatch_tag. - Affichez le premier groupe capturé par la regex et enregistrez-le dans
notmatch_tag.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
for string in html_tags:
# Complete the regex and find if it matches a closed HTML tags
match_tag = re.match(____"<____>.*?", ____)
if match_tag:
# If it matches print the first group capture
print("Your tag {} is closed".format(match_tag.____(____)))
else:
# If it doesn't match capture only the tag
notmatch_tag = re.match(____"<____>", ____)
# Print the first group capture
print("Close your {} tag!".format(notmatch_tag.____(____)))