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