Ta bort de oönskade iTunes-låtar från datorn (5 / 10 steg)
Steg 5: En (mycket) kort lektion om reguljära uttryck
För att ta våra hash poster från XML-filen, och också spara lite tid söka, vi vill uppmana hjälp av en av Perls mer kraftfulla funktioner: det reguljära uttrycket. Jag kommer att göra en kort lektion om reguljära uttryck, men för er som vill ha mer detaljerade förklaringar, det finns massor av bra reguljära uttrycket handledning online. Kolla in http://perldoc.perl.org/perlretut.html för en bra reguljära uttrycket handledning.Kort sagt, ger reguljära uttryck oss verktygen att gå igenom strängar, ersätta en sträng med en annan sträng, eller spara delar av en sträng för senare användning. Reguljära uttryck ger 2, matchande (m / /) och byte (s / /) operatörer, som kommer att användas för detta projekt. För att använda någon av de här funktionerna i en tilldelning sammanhang, vi kommer att använda Perls bindande operatör (= ~), som används för att binda ett mönster till en strängvariabel val.
Exempel:
$comment = ~ /Purduecer/; #returns sant om $comment strängen innehåller frasen "Purduecer" s / [a-ö] / [A-Z] /; #take alla gemena bokstäver i sträng och dra nytta av dem i $_ sträng
En andra användbar funktion i reguljära uttryck är minne variabler. Reguljära uttryck, kan du placera vissa poster inom parentes, och sedan använda speciella mönstret matchar minne variabler $1, $2, etc. att få tillgång till delarna av strängar som matchade dessa delar senare.
Exempel:
/(Instructables) robot /; #matcha någon linje med frasen "Instructables Robot" $website = $1; #Save resultat av framgångsrika mönster match i första uppsättning parens #(i detta fall variabeln $1 innehåller "Instructables")
Slutligen, i reguljära uttryck, det finns vissa tecken som tjänar ett speciellt syfte. Detta är omvänt snedstreck flyr (vilket bör titta bekant för C-programmerare), karaktär klasser och metatecken. Till exempel, för att matcha någon bokstav som har en flik på vardera sidan, kunde vi säga:
/\t[a-za-Z]\t/
Dessa hakparenteser används i reguljära uttryck för att definiera en teckenklass. Anta dock att vi ville hitta text inom hakparenteser i raden. Vi kunde helt enkelt inte skriva det som det är, som visas nedan:
/ [[a-öA-Ö] +] /; #WRONG, yttre hakparenteser tolkat som en teckenklass, gör inte detta
Så, för att ta bort de speciella kvaliteterna av para av hakparenteser, lägga ett omvänt snedstreck i förväg, som tar bort de speciella kvaliteterna av någon annars reserverade tecken inom ett reguljärt uttryck.
/\[[a-za-Z]+\]/; #Correct, nu matchar valfritt antal bokstäver omges av torget #brackets