Как сопоставить вложенные группы только в скобках?

Я пытаюсь сопоставить цепочки символов, которые находятся в пределах одной открывающей и закрывающей скобки.

В следующих примерах только первые две строки должны возвращать ab.
Другие не должны совпадать

ab(ab)ac => ab
(ab)ndn => ab
ab(ab(ac)an) => void
ab((ab)ab)ab => void
ab(ab(abb))ab => void
ab(ab(ab(ab))ab) => void

Это настолько далеко, насколько я мог сказать. Я не знаю, почему третья строка все еще совпадает. https://regex101.com/r/weGhVz/2

1 ответ

Решение

Вы можете использовать функцию отрицательного просмотра регулярных выражений, чтобы убедиться, что после первого закрытия парентез отсутствует.

\((\w*)\)(?!\w*\))

Это производит вывод, который вы хотите. Первая группа дает последовательность в скобках

Другие вопросы по тегам