logo

Tutorial su Regex - Come scrivere espressioni regolari?

Un'espressione regolare (regex) è una sequenza di caratteri che definisce un modello di ricerca. Ecco come scrivere le espressioni regolari:

  1. Inizia comprendendo i caratteri speciali utilizzati nelle espressioni regolari come "." '*' '+' '?' e altro ancora.
  2. Scegli un linguaggio di programmazione o uno strumento che supporti le espressioni regolari come Python Perl o grep.
  3. Scrivi il tuo modello utilizzando caratteri speciali e caratteri letterali.
  4. Utilizzare la funzione o il metodo appropriato per cercare il modello in una stringa.

Esempi:

  1. Per abbinare una sequenza di caratteri letterali è sufficiente scrivere tali caratteri nel modello.
  2. Per abbinare un singolo carattere da un insieme di possibilità utilizzare parentesi quadre, ad es. [0123456789] corrisponde a qualsiasi cifra.
  3. Per abbinare zero o più occorrenze dell'espressione precedente utilizzare il simbolo asterisco (*).
  4. Per abbinare una o più occorrenze dell'espressione precedente utilizzare il simbolo più (+).
  5. È importante notare che le espressioni regolari possono essere complesse e difficili da leggere, quindi è consigliabile utilizzare strumenti come i tester delle espressioni regolari per eseguire il debug e ottimizzare i modelli.

Un'espressione regolare (a volte chiamata espressione razionale) è una sequenza di caratteri che definisce un modello di ricerca principalmente da utilizzare nella corrispondenza di modelli con stringhe o nella corrispondenza di stringhe, ovvero operazioni simili a "trova e sostituisci". Le espressioni regolari sono un modo generalizzato per abbinare modelli con sequenze di caratteri. È utilizzato in ogni linguaggio di programmazione come C++ Java e Python. 



Cos'è un'espressione regolare e cosa la rende così importante?  

Regex è utilizzato in Google Analytics nella corrispondenza degli URL nel supporto della ricerca e delle sostituzioni negli editor più popolari come Sublime Notepad++ Brackets Google Docs e Microsoft Word.

    Example :     Regular expression for an email address :  
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{25})$

L'espressione regolare sopra può essere utilizzata per verificare se un dato set di caratteri è un indirizzo email o meno. 

Come scrivere espressioni regolari?

Esistono alcuni elementi utilizzati per scrivere espressioni regolari come indicato di seguito:



1. Ripetitori (  * + e { } )  

Questi simboli agiscono come ripetitori e indicano al computer che il carattere precedente deve essere utilizzato più di una volta.

2. Il simbolo dell'asterisco ( * )

Dice al computer di abbinare il carattere precedente (o l'insieme di caratteri) per 0 o più volte (fino a infinito).

sql seleziona da più tabelle
    Example :    The regular expression ab*c will give ac abc abbc abbbc….and so on 

3. Il simbolo Più ( + )  

Dice al computer di ripetere il carattere precedente (o l'insieme di caratteri) almeno una o più volte (fino all'infinito).



    Example :    The regular expression ab+c will give abc abbc  
abbbc … and so on.

4. Le parentesi graffe { … }  

Dice al computer di ripetere il carattere precedente (o l'insieme di caratteri) per un numero di volte pari al valore all'interno di questa parentesi.

    Example :    {2} means that the preceding character is to be repeated 2   
times {min} means the preceding character is matches min or more
times. {minmax} means that the preceding character is repeated at
least min & at most max times.

5. Carattere jolly ( . ) 

Il simbolo del punto può prendere il posto di qualsiasi altro simbolo, per questo viene chiamato carattere jolly.

    Example :      
The Regular expression .* will tell the computer that any character
can be used any number of times.

6. Carattere facoltativo ( ? )  

Questo simbolo indica al computer che il carattere precedente può essere presente o meno nella stringa da confrontare.

    Example :      
We may write the format for document file as – docx?
The ‘?’ tells the computer that x may or may not be
present in the name of file format.

7. Il simbolo dell'accento circonflesso ( ^ ). ( Impostazione della posizione per la partita)

Il simbolo dell'accento circonflesso indica al computer che la corrispondenza deve iniziare all'inizio della stringa o della riga.

elenco collegato java
    Example :    ^d{3} will match with patterns like '901' in '901-333-'.

8.  Il simbolo del dollaro ($).  

Dice al computer che la corrispondenza deve verificarsi alla fine della stringa o prima di n alla fine della riga o della stringa.

    Example :    -d{3}$ will match with patterns like '-333' in '-901-333'.

9. Classi di personaggi  

Una classe di caratteri corrisponde a uno qualsiasi di un set di caratteri. Viene utilizzato per abbinare gli elementi più basilari di una lingua come una lettera, una cifra, uno spazio, un simbolo, ecc. 


S : corrisponde a qualsiasi carattere di spazio bianco come spazio e tabulazione.
S : corrisponde a qualsiasi carattere diverso dagli spazi bianchi.
D : corrisponde a qualsiasi carattere numerico.
D: corrisponde a qualsiasi carattere non numerico.
In : corrisponde a qualsiasi carattere di parola (sostanzialmente alfanumerico)
IN : corrisponde a qualsiasi carattere non verbale.
B : corrisponde a qualsiasi limite di parola (questo include spazi trattini virgole punto e virgola ecc.
[set_di_caratteri]: Corrisponde a qualsiasi singolo carattere in set_of_characters. Per impostazione predefinita, la corrispondenza fa distinzione tra maiuscole e minuscole.

    Example :    [abc] will match characters ab and c in any string.

10. [^set_di_caratteri] Negazione:  

Corrisponde a qualsiasi singolo carattere che non si trova in set_of_characters. Per impostazione predefinita, la corrispondenza fa distinzione tra maiuscole e minuscole.

    Example :    [^abc] will match any character except abc .

11. [primo-ultimo] Intervallo di caratteri:  

Corrisponde a qualsiasi singolo carattere nell'intervallo dal primo all'ultimo.

    Example :    [a-zA-z] will match any character from a to z or A to Z.

12. Il simbolo di fuga (    ) 

Se vuoi che corrisponda ai caratteri effettivi "+" "." ecc. aggiungi una barra rovesciata () prima di quel carattere. Ciò dirà al computer di trattare il carattere seguente come carattere di ricerca e di considerarlo per un modello di corrispondenza.

    Example :    d+[+-x*]d+ will match patterns like '2+2'  
and '3*9' in '(2+2) * 3*9'.

13. Raggruppamento di caratteri ( )  

Un insieme di diversi simboli di un'espressione regolare può essere raggruppato insieme per agire come una singola unità e comportarsi come un blocco, per questo è necessario racchiudere l'espressione regolare tra parentesi ( ).

    Example :    ([A-Z]w+) contains two different elements of the regular   
expression combined together. This expression will match any pattern
containing uppercase letter followed by any character.

14. Barra verticale (  |  )  

Corrisponde a qualsiasi elemento separato dal carattere barra verticale (|).

    Example :    th(e|is|at) will match words - the this and that.

15. numero 

Riferimento posteriore: consente di identificare successivamente una sottoespressione precedentemente abbinata (espressione catturata o racchiusa tra parentesi circolari) nella stessa espressione regolare. n significa che il gruppo racchiuso nella parentesi n-esima verrà ripetuto nella posizione corrente.

stringa su json java
    Example :    ([a-z])1 will match ee in Geek because the character   
at second position is same as character at position 1 of the match.

16. Come ( ?# commento ) 

Commento in linea: il commento termina con la prima parentesi di chiusura.

    Example :    bA(?#This is an inline comment)w+b

17. # [fino alla fine della riga] 

Commento sulla modalità X. Il commento inizia con un # senza caratteri di escape e continua fino alla fine della riga.

    Example :    (?x)bAw+b#Matches words starting with A