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.
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.