Вы должны выбрать perl
, поскольку он поддерживает подпрограммные вызовы.Рекурсивное совпадение на {[^{}]*}
должно происходить непрерывно и завершаться неудачно, если обнаружена несбалансированная скобка.Ниже приведено регулярное выражение:
Hello({((?:[^{}]*+|(?1))*)})
См. живое демо здесь
Примечание: оно не работает при обращении к экранированным скобкам.
Perl:
$ echo 'Hello{Some { other} Text}' | perl -pe 's~Hello({((?:[^{}]*+|(?1))*)})~$2~g'
Some { other} Text
Распределение регулярных выражений:
Hello # Match `Hello`
( # Start of 1st capturing group
{ # Match `{`
( # Start of 2nd capturing group
(?: # Start of non-capturing group
[^{}]*+ # Match anything but `{` or `}` possessively
| # Or
(?1) # Recurs first group
)* # End of NCG, repeat as much as possible
) # End of 2nd CP
} # Match `}`
) # End of 1st CP