lpic/101/021_regularex.md

2.3 KiB

Espressioni regolari

Le espressioni regolari o regex sono costituite da sequenze di caratteri che costituiscono un modello generico utilizzato per individuare una sequenza corrispondente in una stringa di dimensioni maggiori.

Esistono due forme di espressioni regolari: basic e extended.

Un atomo, l'elemento base di una regex, e' un carattere, che puo' avere o meno un significato speciale. Alcuni caratteri con un significato speciale:

  • .: il carattere corrisponde a qualsiasi carattere
  • ^: inizio linea. E' un carattere letterale e non ambiguo, tranne quando e' posizionato all'inizio della riga
  • $: fine linea. E' un carattere letterale e non ambiguo, tranne quando e' posizionato alla fine della riga

Parentesi quadre

Un altro atomo sono le [], denominato bracket expression (espressione tra []). Un'espressione tra parentesi quadre e' solo un elenco di caratteri letterali racchiusi da [], facendo corrispondere l'atomo a ogni singolo carattere dell'elenco.

Per specificare i caratteri a cui l'atomo non deve corrispondere, l'elenco deve iniziare con ^, come in [^1b].

E' possibile anche specificare degli intervalli. Per esempio, [0-9] corrisponde alle cifre da 0 a 9 e [a-z] a qualsiasi lettera minuscola.

Quantificatori

I quantificatori * hanno la stessa funzione sia nelle RE di base che in quelle estese: rappresentano un carattere letterale se appaiono all'inizio delle RE o se preceduto da \. Nelle RE di base, + e ? sono, per la maggioranza dei casi, caratteri letterali.

  • *: l'atomo (o il gruppo di caratteri) può comparire zero o più volte. Ad esempio, l'espressione a* corrisponde a "", "a", "aa", "aaa", e così via.
  • +: l'atomo deve comparire una o più volte. Ad esempio, l'espressione a+ corrisponde a "a", "aa", "aaa", ma non corrisponde a "" (stringa vuota).
  • ?: l'atomo può comparire zero o una volta

Limiti

Un buond o limite permette all'utente di specificare il numero di volte che un atomo può apparire.

  • {n}: l'atomo deve comparire esattamente n volte. Ad esempio, a{3} corrisponde a "aaa"
  • {n,}: L'atomo deve comparire almeno n volte. Ad esempio, a{2,} corrisponde a "aa", "aaa", "aaaa", e così via
  • {n,m}: L'atomo può comparire da n a m volte. Ad esempio, xyz{2,4} corrisponde a "xyzz", "xyzzz" e "xyzzzz"