Regex in breve

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Cerca nelle Categorie

regex

Cosa sono le Regex

Espressioni Regolari

› Un’espressione regolare (regular expression o regex) è una sequenza di caratteri che identifica un insieme di stringhe.
› Sono un potente strumento che consente di trovare, estrarre e sostituire parti di testo all’interno di un documento.

Esempi di regex

[-+]?[0-9]+

Trova tutti i numeri interi con segno.

^.*\.txt$

Trova tutti i file che hanno estensione txt.

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

Trova gli indirizzi IPv4.

^4[0-9]{12}(?:[0-9]{3})?$

Trova numeri di carte di credito.

Le regex più semplici

› Nella loro forma più semplice, una regex è una sequenza di caratteri alfanumerici.
› abc ad esempio, trova la stringa ‘abc’.
› Le espressioni regolari, di norma, sono case sensitive. La regex di prima infatti troverà la stringa ‘abc’, ma non la stringa ‘Abc’ o ‘aBc’.
› Le regex possono, tramite regole opportune, trovare qualsiasi carattere, compresi gli altri caratteri ASCII (‘~’, ‘|’) e persino quelli Unicode (‘è’,’①’, ‘⼦’).
› Bisogna tuttavia porre attenzione al fatto che alcuni caratteri hanno una funzione particolare nel linguaggio delle regex.

Quantificatore *

Detto anche stella di Kleene, serve per trovare famiglie di stringhe che hanno da 0 a N ripetizioni di uno stesso carattere.

ab*c → {‘ac’, ‘abc’, ‘abbc’, ‘abbbc’, …}

I quantificatori si riferiscono sempre al carattere immediatamente precedente.

Quantificatori + e ?

+
Identico a *, ma le ripetizioni ammesse sono da 1 a N, e non da 0 a N.

ab+c → {‘abc’, ‘abbc’, ‘abbbc’, …}

?
Ammette l’opzionalità del carattere precedente (può essere presente 0 o 1 volta).

ab?c → {‘ac’, ‘abc’}

Operatore \

\
Effettua l’escaping del carattere precedente, se esso è un carattere particolare.

a** → Non valida
a\** → {‘a’, ‘a*’, ‘a**’, ‘a***’, …}
a*\* → {‘*’, ‘a*’, ‘aa*’, ‘aaa*’, …}
a\*\* → {‘a**’}
a\c → Non valida
a\\c → {‘a\c’}

Ti potrebbe interessare anche:  La trascendenza della plastica

 

Gruppi

› In realtà non è vero che gli operatori si applicano al carattere precedente: è più corretto dire che si applicano al token precedente.
› Un token, nel caso più semplice, è un carattere, ma può essere anche un gruppo o una classe di caratteri.
› In particolare, un gruppo di caratteri è una stringa delimitata dalle parentesi tonde.

a(bc)*d → {‘ad’, ‘abcd’, ‘abcbcd’, …}

› Nell’esempio precedente, il token su cui è applicata la stella di Kleene è (bc).
› L’ordine dei caratteri all’interno del gruppo è importante!

a(cb)*d → {‘ad’, ‘acbd’, ‘acbcbd’, …}

Operatore|

Specifica alternative all’interno di un gruppo.

gr(a|e)y → {‘gray’, ‘grey’}

In un gruppo possono essere presenti più alternative in qualsiasi ordine, e le alternative sono stringhe di qualsiasi lunghezza.

(cla|repl|gu)y → {‘clay’, ‘reply’, ‘guy’}

È inoltre possibile specificare la stringa vuota come alternativa:

(na|)y → {‘y’, ‘nay’}

Classi

› Esiste un modo più pratico per trovare alternative di singoli caratteri, ossia definire una classe di caratteri.
› Una classe di caratteri è un insieme non ordinato di caratteri in alternativa tra di loro delimitato da parentesi quadre.
› La regular expression gr(a|e)y può essere dunque riscritta come:

gr[ae]y → {‘gray’, ‘grey’}

› I quantificatori visti finora perdono di significato se sono inseriti all’interno di una classe, eccetto l’operatore \.

a[-+*\\]b → {‘a+b’, ‘a-b’, ‘a*b’, ‘a\b’}

› Una classe di caratteri è anche essa un token su cui è possibile applicare un quantificatore.

a[cd]?b → {‘ab’, ‘acb’, ‘adb’}

› Lo spazio è un carattere ammesso.

a[ _]b → {‘a_b’, ‘a b’}

Ti potrebbe interessare anche:  Un'applicazione delle equazioni differenziali: la legge esponenziale di decadimento radioattivo
Intervalli

Il carattere – definisce un intervallo di caratteri all’interno di una classe.
Esso è utilizzabile solamente per definire intervalli di caratteri alfanumerici, sia uppercase che lowercase: se usato singolarmente si comporta come un normale carattere.

1[0-4] → {’10’, ’11’ , ’12’ , ’13’ , ’14’}

[A-Za-z]* → una qualsiasi sequenza di lettere
[+-]?17 → {’17’, ‘+17′ ,’-17′}

Negazione
regex escludere caratteri

Il carattere ^, se posto all’inizio di una classe, specifica che la classe rappresenta i caratteri che NON devono essere presenti.
Perde questo significato se è non è il primo carattere di una classe.

1[^0-4] → {’15’, ’16’ , ‘1a’ , ‘1T’ , …}
a[&^|]b → {‘a&b’, ‘a^b’ ,’a|b’}

Classi speciali
espressione regolare: escludere “a capo”

.

Trova qualsiasi carattere eccetto il newline ‘\n’.

. → {‘a’, ‘b’ , ‘4’ , ‘&’ , …}

\d

Trova caratteri numerici. Include [0-9] ma anche tutti i caratteri non-ASCII riconducibili a numeri.

\d → {‘0’, ‘1’ , ‘2’ , ‘3’ ,’𝟘’, …}

\s

Trova whitespace. Include [ \t\n\r\f\v] e tutti i caratteri whitespace speciali Unicode.

\w

Trova caratteri alfanumerici. Include [A-Za-z0-9_] ma anche tutti i caratteri non-ASCII riconducibili a numeri o lettere.

\w → {‘a’, ‘T’ , ‘9’ , ‘è’ ,’①’, ‘_’, …}

› Esistono anche le classi duali di \d, \w, e \s, e sono rispettivamente \D, \W, \S.
› Esse trovano esattamente i caratteri complementari alle classi base:
– \D trova tutti i caratteri che non sono numeri.
– \W trova tutti i caratteri che non sono numeri né lettere.
– \S trova tutti i caratteri non whitespace.

\W → {‘#’, ‘[‘ , ‘+’ , ‘.’ ,’€’, …}

› Le classi speciali \d, \w, e \s, e le loro duali possono essere utilizzate all’interno di altre classi.

Ti potrebbe interessare anche:  Web scraping con Python: Estraiamo i link e le immagini da un sito

[\daB] → {‘0’, ‘1’ , ‘2’ , … , ‘a’, ‘B’}

› Il punto all’interno di una classe invece vale sempre e solo come carattere, non come classe.

[^.] → tutti i caratteri tranne ‘.

regex – classi di caratteri

 

Otes Golf Club Set Carrello da Golf con Ruote, Set da Golf per Bambini, 4 Bastoncini da Golf Colorati e 4 Palline e 2 fori per l’allenamento, Giochi da golf per Bambini Giocattolo
LEGO Creator Dinosauro, Modellini 3 in 1 di T-Rex, Triceratopo e Pterodattilo, Costruzioni, per Bambini dai 7 ai 12 Anni, 31058
Fire TV Stick con telecomando vocale Alexa (con comandi per la TV) | Streaming in HD
Fire TV Stick Lite con telecomando vocale Alexa | Lite (senza comandi per la TV), Streaming in HD

 

(165)

PubblicitàPubblicità