Как сопоставить вложенные группы только в скобках?
Я пытаюсь сопоставить цепочки символов, которые находятся в пределах одной открывающей и закрывающей скобки.
В следующих примерах только первые две строки должны возвращать 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*\))
Это производит вывод, который вы хотите. Первая группа дает последовательность в скобках