⊗pyPmRESF 73 of 129 menu

Flag per le espressioni regolari in Python

Per impostare i flag come uno dei parametri opzionali per i metodi che lavorano con le espressioni regolari, si utilizza la seguente sintassi:

flags=re.nome_flag

Flag principali per lavorare con le espressioni regolari

Flag Scopo
re.IGNORECASE Ignora il caso dei caratteri.
re.DOTALL Il punto corrisponde a qualsiasi carattere, incluso il ritorno a capo.
re.I Rende la ricerca insensibile al caso.
re.L Cerca le parole in base alla lingua corrente. Questa interpretazione interessa il gruppo alfabetico (\w e \W), così come il comportamento del confine di parola (\b e \B).
re.M Il carattere $ effettua la ricerca alla fine di qualsiasi riga di testo (non solo alla fine del testo) e il carattere ^ effettua la ricerca all'inizio di qualsiasi riga di testo (non solo all'inizio del testo).
re.S Cambia il significato del punto (.) in corrispondenza con qualsiasi carattere, incluso il ritorno a capo.
re.U Interpreta le lettere in base al set di caratteri Unicode. Questo flag influisce sul comportamento di \w, \W, \b, \B. In Python 3+ questo flag è impostato di default.
re.X Permette una sintassi di espressione regolare multiriga. Ignora gli spazi all'interno del pattern (tranne gli spazi all'interno di un set [] o quando escapati con backslash) e tratta il carattere non escapato '#' come un commento.

Esempio

Con il flag re.IGNORECASE si può ignorare il caso dei caratteri. Vediamo come si fa. In questo esempio l'espressione regolare troverà solo le lettere minuscole:

txt = 'aaa bbb CCC DDD' res = re.sub('[a-z]+', '!', txt) print(res)

Risultato dell'esecuzione del codice:

'! ! CCC DDD'

Esempio

Ora aggiungiamo come quarto parametro del metodo il flag re.IGNORECASE e l'espressione regolare inizierà a cercare i caratteri in tutti i casi:

txt = 'aaa AAA bbb BBB' res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE) print(res)

Risultato dell'esecuzione del codice:

'! ! ! !'

Esempio

Troviamo con l'espressione regolare tutti i ritorni a capo:

txt = '''aaa bbb''' res = re.sub('\n', '!', txt) print(res)

Risultato del codice eseguito:

'aaa!bbb'

Esempio

Ma, se serve sostituire tutti i caratteri, usando il punto nell'espressione regolare, non verranno catturati i ritorni a capo:

txt = '''aaa bbb''' res = re.sub('.', '!', txt) print(res)

Risultato del codice eseguito:

'!!! !!!'

Esempio

Per correggere questo errore, si dovrebbe applicare il flag re.DOTALL:

res = re.sub('.', '!', txt, flags=re.DOTALL) print(res)

Risultato del codice eseguito:

'!!!!!!!'

Esempio

Nel parametro si possono passare anche diversi flag, mettendo tra di loro l'operatore +. Prima sostituiamo la lettera 'a' alla fine della riga:

txt = ''' aaa AAA aaa''' res = re.sub('aaa ', '!', txt) print(res)

Risultato del codice eseguito:

''' aaa AAA ! '''

Esempio

Ora impostiamo il flag re.M:

res = re.sub('aaa ', '!', txt, flags=re.M) print(res)

Risultato del codice eseguito:

''' ! AAA ! '''

Esempio

Applichiamo ora anche il flag per ignorare il caso:

res = re.sub('aaa ', '!', txt, flags=re.M+re.IGNORECASE) print(res)

Risultato del codice eseguito:

''' ! ! ! '''
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta