Regex соответствует всему, что заключено в наименьшее количество скобок - PullRequest
2 голосов
/ 09 марта 2019

Я хочу сопоставить что-либо внутри наименьшего количества скобок, но исключаю другие скобки внутри него.

Пример 1:

Строка:

(((1))) (2)

Результат:

2

Пример 2:

Строка:

((((1) 2) 3)

Результат:

3

Пример 3:

Строка:

(1 (2 (3)))

Результат:

1

Мое регулярное выражение:

\(((?>[^\(\)]+|(?R))*)\)

К сожалению, результат не тот.

1 Ответ

0 голосов
/ 09 марта 2019

Попробуйте это:

(?<!\({2}|\(\d\(|\))(\d)|(\d)(?:\)[^\(\)\d])

DEMO

...