Frage

Given some text I want remove all text wrapped between { and }. The block may themselves contain some block. How can I do that using PCRE regex?

\\example input:
{a}b{c{d}}e{f{g}h}

\\output:
be
War es hilfreich?

Lösung

Using regular expression recursion:

\{(?>[^{}]|(?R))*\}

See a regex101 demo


PHP example:

$input = '{a}b{c{d}}e{f{g}h}';
$output = preg_replace('/\{(?>[^{}]|(?R))*\}/', '', $input);
echo($output); # => be
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top