CommencezCommencez gratuitement

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

Voir le cours

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.____(____)))
Modifier et exécuter le code