Étape 5: Une (très) brève leçon sur les Expressions régulières
Afin de saisir nos entrées de hachage du fichier XML et aussi économiser un peu de temps à la recherche, nous allons vouloir faire appel à l’aide de l’une des fonctionnalités plus puissantes de Perl : l’expression régulière. Je vais faire une très brève leçon sur les expressions régulières, mais pour ceux d'entre vous qui veulent plus d’explications, il y a beaucoup d’expression régulière bon tutoriels en ligne. Consultez http://perldoc.perl.org/perlretut.html pour obtenir un didacticiel bonne expression régulière.En résumé, les expressions régulières nous offrent un ensemble d’outils pour aller par des chaînes, remplacer une chaîne par une autre chaîne, ou de sauvegarder une partie d’une chaîne pour une utilisation ultérieure. Les expressions régulières fournissent 2 fonctions, la mise en correspondance (m / /) et le remplacement (s / /) les opérateurs, qui vont être utilisées pour ce projet. Pour utiliser une de ces fonctions dans un contexte de cession, nous utiliserons opérateur de liaison de Perl (= ~), qui est utilisé pour lier un modèle à une variable de chaîne de choix.
Exemples :
$comment =~ /Purduecer/; #returns true if $comment string contains phrase "Purduecer"s/[a-z]/[A-Z]/; #take all lowercase letters in string and capitalize them in $_ string
Une deuxième caractéristique utile des expressions régulières est celle des variables de la mémoire. Dans les expressions régulières, vous pouvez placer certains éléments entre parenthèses, et ensuite utiliser le modèle spécial match variables mémoire $1, $2, etc. à accéder les portions des chaînes qui correspondent à ces pièces plus tard.
Exemples :
/(Instructables) Robot/; #Match any line with the phrase "Instructables Robot"$website = $1; #Save result of successful pattern match contained in first set of parens #(in this case, variable $1 contains "Instructables")
Enfin, dans les expressions régulières, il y a certains caractères qui poursuivent un but spécial. Il s’agit d’évasions de barre oblique inverse (qui devrait regarder familier aux programmeurs en C), les classes et les métacaractères de caractère. Par exemple, pour correspondre à n’importe quelle lettre unique qui dispose d’un onglet de chaque côté, nous pourrions dire :
/\t[a-zA-Z]\t/
Ces crochets sont utilisés dans une expression régulière pour définir une classe de caractères. Cependant, supposez que nous voulions Rechercher du texte entre crochets dans la ligne. Nous pourrions écrire pas simplement tel quel, comme montré ci-dessous :
/[[a-zA-Z]+]/; #WRONG, outer square brackets interpreted as a character class, do not do this
Donc, pour supprimer les qualités particulières de la paire de crochets, ajouter une barre oblique inverse au préalable, qui supprime les qualités particulières de tout autrement réservés au caractère dans une expression régulière.
/\[[a-zA-Z]+\]/; #Correct, now matches any number of letters enclosed within a pair of square #brackets