Fermez la balise, s'il vous plaît !
Entre-temps, vous travaillez sur un autre de vos projets. L'entreprise va développer un nouveau produit. Il aidera les développeurs à vérifier automatiquement le code qu'ils écrivent. Vous devez écrire un court script pour vérifier 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 est toujours au début de la chaîne. Elle apparaît à l'intérieur de <>. Une balise fermante apparaît aussi à l'intérieur de <>, mais elle est précédée de /.
Vous vous souvenez aussi que les groupes de capture peuvent être référencés par des numéros, p. ex. \4.
La liste html_tags, qui contient trois chaînes avec des balises HTML, ainsi que le module re sont déjà chargés dans votre session. Vous pouvez utiliser print() pour afficher les données dans l'IPython Shell.
Cette activité fait partie du cours
Expressions régulières en Python
Instructions de l’exercice
- Complétez l'expression rationnelle afin de repérer les balises HTML fermées. Cherchez s'il y a une correspondance dans chaque chaîne de la liste
html_tags. Assignez 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 l'expression rationnelle pour ne faire correspondre que le texte à l'intérieur de la balise HTML. Assignez-la à
notmatch_tag. - Affichez le premier groupe capturé par l'expression rationnelle 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.____(____)))