From 0c1ed72a8bd23f8d9da344c451b026d92972da0f Mon Sep 17 00:00:00 2001 From: piccihud Date: Thu, 2 Jan 2025 16:22:08 +0100 Subject: [PATCH] quantificatori e limiti nelle RE. Creato file 021_grep_sed --- 101/021_regularex.md | 23 ++++++++++++++++++++++- 101/022_grep_sed.md | 7 +++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 101/022_grep_sed.md diff --git a/101/021_regularex.md b/101/021_regularex.md index 5f42aa3..7c6efda 100644 --- a/101/021_regularex.md +++ b/101/021_regularex.md @@ -1,5 +1,9 @@ +# 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 @@ -12,4 +16,21 @@ Un altro atomo sono le `[]`, denominato *bracket expression* (espressione tra [] 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. \ No newline at end of file +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" + diff --git a/101/022_grep_sed.md b/101/022_grep_sed.md new file mode 100644 index 0000000..3ac3966 --- /dev/null +++ b/101/022_grep_sed.md @@ -0,0 +1,7 @@ +# grep e sed + +Due comandi sono particolarmente adatti per manipolare file e dati di testo usando le RE: `grep` e `sed`. + +## grep + +