Le espressioni regolari6.1 sono una funzionalità che permette di ottenere risultati notevoli attraverso la ricerca di corrispondenze di testo (``pattern matching''). In Python è disponibile il modulo re che implementa la gestione efficiente delle espressioni regolari in stile Perl. Come al solito per poterlo utilizzare è necessario importare il modulo che le implementa:
import reEsso permette di 'compilare' le nostre espressioni regolari in oggetti specifici i cui metodi più importanti sono search e match.
Le espressioni regolari operano sulle stringhe, e le stringhe più semplici sono costituite da singoli caratteri. La maggior parte dei caratteri corrisponde semplicemente a se stessa, quindi a corrisponderà alla stringa 'a' (più avanti vedremo come si può discriminare o meno tra maiuscolo e minuscolo), stessa cosa per una stringa costituita da caratteri ordinari, come a esempio 'dna'.
Alcuni caratteri assumono invece significati particolari e vengono chiamati metacaratteri. Nel caso in cui si voglia interpretarli come caratteri ordinari dovranno essere protetti. Eccone una lista completa
[ \ { | ( ) ^ $ ? + * .I metacaratteri costituiscono uno dei fondamenti della potenza delle espressioni regolari, da qui in avanti indicate come RE.
Insiemi di caratteri sono specificati tramite le parentesi quadre [ e ]. Per esempio
[abc]corrisponderà a uno qualsiasi dei caratteri tra [ e ], l'intervallo completo tra due caratteri può essere abbreviato usando -, quindi l'esempio sopra è equivalente a
[a-c]È anche possibile indicare un carattere esterno a un intervallo ('complementazione'), usando il metacarattere per esempio a
[^c]corrisponderà qualunque carattere eccetto 'c', ma a
[^]corrisponderà semplicemente ''. Infatti eventuali metacaratteri compresi tra [ e ] verranno presi alla lettera, quindi
[]]corrisponderà a ']'.
Le RE adiacenti vengono concatenate, per cui se A e B sono due espressioni regolari, AB è un'espressione regolare. Se una stringa p corrisponde ad A e un'altra stringa q a B, la stringa pq corrisponderà ad AB. Possiamo costruire insiemi di caratteri concatenando intervalli, a esempio
[a-zA-Z]corrisponderà a un qualunque carattere alfabetico.