jjzjj

javascript - 正则表达式仅捕获匹配中捕获组的最后一个实例

我在两种不同的语言(JavaScript和Flash)中使用以下正则表达式产生相同的奇怪结果。我想知道的不是如何修复它,而是为什么会出现这种行为?正则表达式:\[(\\{2}|\\\]|[^\]])*\]这里的目标是匹配括号内的字符串,并确保我不会在转义的括号处停止。如果我有文本输入[abcdefg]它是正确匹配的,但作为捕获组的一部分返回的唯一内容是g,正如我所期望的那样abcdefg。如果我将表达式更改为\[((?:\\{2}|\\\]|[^\]])*)\],然后我得到我想要的结果。那么为什么会这样呢?这在其他语言中是否一致?注意:将表达式简化为\[([^\]])*\]会产生同样的