Vai al contenuto
eLearner.app
Modulo 5 · Lezione 3 di 419/32 nel corso~8 min
Lezioni del modulo (3/4)

Negazione: `[^...]`

Mettere un accento circonflesso ^ come primo carattere dentro le quadre inverte la classe: matcha qualunque carattere tranne quelli elencati.

Code
Pattern: [^aeiou]
Sample:  ciao mondo
          ^   ^^  ^

[^aeiou] matcha consonanti, spazi, punteggiatura, cifre\u2026 tutto cio' che non e' una vocale.

Esempi tipici

  • [^\s] -- qualunque carattere "non spazio" (equivalente a \S).
  • [^0-9] -- qualunque cosa che non sia una cifra (equivalente a \D).
  • [^"]+ -- "una sequenza di caratteri che non siano doppi apici" (utile per estrarre contenuti tra virgolette).
Code
Pattern: "([^"]+)"
Sample:  Il libro "Il nome della rosa" e' famoso.

Il gruppo ([^"]+) cattura tutto cio' che sta tra virgolette fermandosi prima del prossimo ": e' un trucco classico per evitare il problema greedy-vs-lazy.

Negazione e caratteri jolly alternativi

La classe negata [^...] consuma esattamente un carattere che NON appartiene all'insieme elencato. È uno strumento formidabile per evitare che l'engine consumi delimitatori critici, prevenendo ReDoS dovuti a tentativi infiniti.

Prova tu

Esercizio#regex.m5.l3.e1
Tentativi: 0Caricamento…

Estrai il contenuto di ogni stringa tra doppi apici, senza catturare gli apici stessi.

Caricamento editor…
Mostra suggerimento

Sostituisci .+ con [^"]+: in questo modo il match si ferma al prossimo apice.

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#regex.m5.l3.e2
Tentativi: 0Caricamento…

Trova tutte le parole composte SOLO da consonanti (niente vocali, niente cifre, niente simboli).

Caricamento editor…
Mostra suggerimento

Dentro le quadre puoi combinare negazione di vocali con \\W (non-parola) e \\d (cifre).

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#regex.m5.l3.e3
Tentativi: 0Caricamento…

Matcha sequenze di uno o più caratteri escludendo esplicitamente spazi vuoti e virgole.

Caricamento editor…
Mostra suggerimento

Usa [^\s,] con il quantificatore +.

Soluzione disponibile dopo 3 tentativi