
Python e Regex: lets me save the day
Le espressioni regolari (regex) si possono fare risalire alle prime ricerche del neurofisologo Warren McCulloch (1898-1969) e del giovane logico Walter Pitts (1923-1969) che nell'opera "A Logical Calculus of Ideas Immanent in Nervous Activity" (1943) furono i precursori dello studio delle reti neurali artificiali. Infine vennero sistematizzate nel 1956 dal matematico americano Stephene Cole Kleene (1909-1994) usando la nozione di "regular sets" nel dominio degli automi e dei linguggi formali. Python: import rePython , attraverso il modulo re, offre due diversi metodi per lavorare con le Regex: il metodo match() per una corrispondenza ad inizio della stringa (string) e search() che controlla se c'è una corrispondenza in qualsiasi punto della stringa. search() Vs match()
Il comportamento di match sembra essere più indicato per il controllo dei dati inseriti in un form data (input validation) come nome, cognome, email o telefono. Form che dovrà sempre seguire delle best practices per aumentarne l'efficienza ("Keep calm user interface best practices", 2016). Search() invece cerca i match anche all'interno della stringa restituendo un oggetto match con il relativo span.
Restituisce però solo il primo match che trova infatti ci restituisce solo c in posizione '(2,3)', ma non quella in '(4,5)'. Questo comportamento é verificabile controllando lo span.
findall()Se volessimo trovare tutte le occorenze di una parola in una fraseil metodo findall() trova tutti i match in una frase, non solo la prima corrispondenza come search(). A differenza di search() che restituisce un oggetto match, findall restituisce una lista delle corrispondenze.
Findall() cerca anche all'interno della stringa restituendo per esempio la 'c'come avrebbe fatto anche search(). Regex: online toolPer un controllo più immediato delle espressioni regolari un ottimo tool online è regex101
Credit image: xkcd SitografiaDocumentazione |