删除第一级块

时间:2014-02-16 08:49:48

标签: regex replace pcre

考虑到某些文字,我想删除{}之间的所有文字。块本身可能包含一些块。我怎么能用PCRE正则表达式呢?

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

\\output:
be

1 个答案:

答案 0 :(得分:3)

使用regular expression recursion

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

请参阅a regex101 demo


PHP示例:

$input = '{a}b{c{d}}e{f{g}h}';
$output = preg_replace('/\{(?>[^{}]|(?R))*\}/', '', $input);
echo($output); # => be