Предполагая, что вы хотите сделать, это выбрать максимальную подстроку между {
и }
:
.*?
- это квантификатор lazy . То есть он будет соответствовать наименьшему возможному количеству символов. Если вы измените свое выражение на {.*}
, вы должны найти, что оно будет работать.
Если вы хотите проверить, правильно ли сопоставлены фигурные скобки, то, как указали другие ответы, это невозможно с (одним) регулярным выражением. Вы можете сделать это, сканируя строку с помощью стека. Или с каким-то колдовством повторения вашего регулярного выражения по предыдущему максимальному соответствию. Хлоп.