Regex захватывает только последний экземпляр группы захвата в матче

У меня есть следующее регулярное выражение на двух разных языках, которое дает одинаковые странные результаты (javaScript и Flash). То, что я хочу знать, не как это исправить, но почему происходит поведение?

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

\[(\\{2}|\\\]|[^\]])*\]

Цель здесь - сопоставить строку в скобках и убедиться, что я не останавливаюсь на экранированной скобке.

Если у меня есть ввод текста[abcdefg] оно правильно сопоставлено, но единственное, что возвращается как часть группы захвата, этоgгде, как я ожидаюabcdefg, Если я изменю выражение на\[((?:\\{2}|\\\]|[^\]])*)\]тогда я получу результат, который хочу.

Так почему это происходит? Будет ли это соответствовать другим языкам?

нота: Упрощение выражения до\[([^\]])*\] производит ту же проблему.

Ответы на вопрос(2)

Ваш ответ на вопрос