Come eliminare testo tra parentesi in regex

Per individuare e togliere il testo tra parentesi tonde ( ) in un contenuto tramite le espressioni regolari, uso la seguente regex:

\([^)]*\)

In uno script php per rimuovere il testo tra parentesi preferisco però usare la seguente forma

#\s*\(.+\)\s*#U

Ho testato la prima regular expressions e svolge il suo lavoro.

il test di verifica della prima regex

Tuttavia, la prima regular expression non funziona bene quando la uso nell'istruzione preg_replace o preg_match del linguaggio php.

preg_replace('\([^)]*\)', "", $stringa);

Per questo motivo in uno script php preferisco usare la seconda regex quando devo eliminare il contenuto tra parentesi tonde.

preg_replace('#\s*\(.+\)\s*#U', "*", $stringa);

Quest'ultima espressione regolare ottiene lo stesso risultato della prima ma svolge correttamente il suo compito anche in php.

E per togliere le parentesi quadre o graffe?

Lo stesso metodo è utile per rimuovere il contenuto tra parentesi quadre [ ].

preg_replace('#\s*\[.+\]\s*#U', "*", $paginawiki);

oppure tra parentesi graffe { }.

preg_replace('#\s*\{.+\}\s*#U', "*", $paginawiki);

Basta sostituire le parentesi di apertura e di chiusura nelle precedenti regex.

In generale, questa espressione regolare permette di togliere il testo tra qualsiasi simbolo di apertura e di chiusura.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Regular expressions