← Ultimi articoli
💻 computer science

Towards Efficient Matching of Regexes with Backreferences using Register Set Automata (Technical Report)

Questo rapporto tecnico propone le automi a set di registri (RSA) come modello deterministico per l'abbinamento efficiente e robusto di espressioni regolari con backreference, offrendo complessità temporale lineare o quadratica e dimostrando sperimentalmente un miglioramento significativo rispetto agli approcci attuali.

Autori originali: Vojtěch Havlena, Lukáš Holík, Ondřej Lengál, Jan Vašák, Sabína Gulčíková

Pubblicato 2026-04-16
📖 4 min di lettura☕ Lettura da pausa caffè

Autori originali: Vojtěch Havlena, Lukáš Holík, Ondřej Lengál, Jan Vašák, Sabína Gulčíková

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Immagina di avere un detective (il computer) che deve cercare un indizio specifico in un mare di documenti (i dati). Il detective usa una lista di regole chiamata Espressione Regolare (Regex) per trovare ciò che cerca.

Il Problema: Il Detective che va in "Loop"

Spesso, queste regole sono semplici: "Cerca la parola 'gatto'". Il detective le legge velocemente e finisce il lavoro in un attimo.

Ma a volte, le regole diventano complicate. Immagina una regola che dice: "Trova una frase che inizia con una parola, poi un punto e virgola, poi un'altra parola, e alla fine deve finire con le stesse tre parole che hai trovato all'inizio, ma al contrario."

Questa è una regola con i Backreference (riferimenti a ciò che è stato trovato prima).
Il problema è che i detective attuali (i software che usiamo oggi) lavorano in modo molto ingenuo: provano una combinazione, se non funziona, tornano indietro, cancellano tutto e provano un'altra strada. Se la frase è lunga e la regola è complessa, il detective può impazzire, provare milioni di strade inutili e bloccare il sistema. Questo è un attacco chiamato ReDoS (Denial of Service tramite Espressioni Regulari), che può far crashare siti web famosi come StackOverflow.

La Soluzione: I "Contenitori Magici" (Register Set Automata)

Gli autori di questo paper, un gruppo di ricercatori cecoslovacchi e danesi, hanno inventato un nuovo tipo di detective, chiamato Register Set Automata (RSA).

Ecco come funziona la loro magia, usando un'analogia:

  1. Il vecchio metodo (Backtracking): È come se il detective avesse una sola penna e un foglio di carta. Se deve ricordare tre parole diverse, le scrive, poi le cancella, poi le riscrive provando combinazioni diverse. È lento e disordinato.
  2. Il nuovo metodo (RSA): Immagina che il detective abbia una serie di cestini magici (i registri).
    • Invece di scrivere una parola alla volta, il detective può buttare nel cestino tutte le parole che ha visto finora che potrebbero essere utili.
    • Quando arriva una nuova parola, il detective non deve più indovinare. Guarda semplicemente nel cestino: "Questa parola è già dentro?"
    • Se sì, sa esattamente cosa fare. Se no, la aggiunge al cestino.
    • Non deve mai tornare indietro o cancellare nulla. È un processo lineare, fluido e velocissimo.

Cosa hanno scoperto?

Hanno creato un modo matematico per trasformare queste regole complesse (quelle che fanno impazzire i computer attuali) in istruzioni per i loro "cestini magici".

  • Velocità: Il loro metodo è prevedibile. Che la stringa di testo sia corta o lunghissima, il tempo di ricerca cresce in modo lineare (se raddoppi la lunghezza del testo, raddoppia il tempo, non lo moltiplica per un milione come fanno gli altri).
  • Sicurezza: Poiché non si bloccano mai in loop infiniti, sono immuni agli attacchi ReDoS. Un hacker non può più mandare un testo "truccato" per far crashare il server.
  • Teoria: Hanno anche dimostrato che questo nuovo modello di detective è molto potente, più di molti altri modelli matematici esistenti, e che si può sempre verificare se una regola ha senso o meno (anche se è una verifica matematica molto complessa).

L'Esperimento

Hanno costruito un prototipo (un software chiamato rsamatch) e lo hanno messo alla prova contro i migliori detective esistenti (come quelli usati da Python, Java, o i motori di ricerca).
Risultato: Il loro detective ha vinto a mani basse. Mentre gli altri si bloccavano o impiegavano minuti per trovare che una frase non corrispondeva, il loro lo faceva in millisecondi, senza mai perdere la calma.

In sintesi

Gli autori hanno risolto un vecchio problema: come cercare pattern complessi nei testi senza far impazzire il computer. Hanno sostituito il metodo del "prova e sbaglia" (lento e pericoloso) con un metodo di "memoria collettiva" (cestini magici) che è veloce, sicuro e non si blocca mai. È come passare da un investigatore che perde le tracce a uno che ha una mappa perfetta di tutto ciò che è successo.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →