¿La codicia se comporta de manera diferente en JavaScript?

Habíaesta pregunta lo que me hizo darme cuenta de que la codicia de los cuantificadores no es siempre la misma en ciertos motores de expresiones regulares. Tomando la expresión regular de esa pregunta y modificándola un poco:

!\[(.*?)*\]

(Yo sé eso* es redundante aquí, pero encontré que lo que sigue es un comportamiento bastante interesante).

Y si intentamos emparejar contra:

![][][]

Esperaba que el primer grupo de captura estuviera vacío, porque(.*?) Es perezoso y se detendrá en la primera.] se encuentra a través de Esto es precisamente lo que sucede en:

PCREPitónperono Javascript donde coincide con el todo][][. (jsfiddle)

Miré a mi alrededor con otros idiomas, por ejemplo.rubí, Java, DO# pero todos se comportan como esperaba que ellos (es decir, devuelvan grupos de captura vacíos).

(regexplanet'sgolang sabor aparentemente también obtiene grupos de captura no vacíos)

Parece que el motor de expresiones regulares de JavaScript está interpretando el segundo* para convertir.*? De perezosos a codiciosos. Tenga en cuenta que la conversión de la segunda* a*? parece hacer que las expresiones regulares funcionen como esperaba (al igual que la eliminación completa del cuantificador, porque sé que está siendo redundante en esta situación, pero ese no es el punto).

* se utilizó en la expresión regular, pero este comportamiento es similar con+, ? o{m,n} y convertirlos a su versión perezosa da los mismos resultados que con*?.

¿Alguien sabe lo que realmente está pasando?