Re: I think I found a bug in Lua string.patterns, can anyone help see if it's true ?

Spar <[email protected]> Tue, 12 May 2026 14:50:31 +0300
Newsgroups gmane.comp.lang.lua.general
Message-ID <6c3c7550-f6b3-4a45-8da1-0250398b88e1@Spark>
It's hard to read. Perhaps, upload the code to pastebin or gist?
On May 12, 2026 at 12:31 +0300, Domingo Alvarez Duarte <[email protected]>, wrote:
> While doing some text replacements I found an unexpected behavior that can be replicated with this Lua shown bellow, I've tested with Lua 5.1 through 5.5 and LuaJIT, maybe I'm missing something subtle here, any help is welcome.
> ====
> local txt2 = [===[
> 03.01.411A01.22700      Limpieza y aseo                                              1.210.830,00                    0,00                 0,00                0,00          1.210.830,00        0,00         1.075.110,90       88,79         1.021.998,36       84,40          871.196,21       71,95          150.802,15         188.831,64
>
>
>
>
> Cuentas Anuales. Ejercicio 2024                                                                                                                                                                                                                                                                                                    Pág. 64
>                     CUENTAS ANUALES DE LA ADMINISTRACIÓN GENERAL DE LA COMUNIDAD DE CASTILLA Y LEÓN. EJERCICIO 2024
>
>
> EJECUCIÓN DEL PRESUPUESTO DE GASTOS DEL EJERCICIO 2024
> GASTOS POR APLICACIÓN
> ADMINISTRACIÓN GENERAL                                                                                                                                                                                                                                                                          A FECHA DE 31/12/2024
>                                      APLICACION                            PRESUPUESTO INICIAL        MODIFICACIONES       MODIFICACIONES           TOTAL            PRESUPUESTO          (2)/(1) %   COMPROMISOS (3)      (3)/(2) %    OBLIGACIONES        (4)/(2) %      PAGOS            (5)/(2) %   OBLIG.PTES PAGO      REMANENTES DE
>
>                                                                                    (1)                  POSITIVAS            NEGATIVAS          MODIFICACIONES       DEFINITIVO (2)                                                    RECONOCIDAS (4)                  REALIZADOS (5)                                          CREDITO
>
>
> 03.01.411A01.22701      Seguridad                                                        493.750,00                 0,00                 0,00                 0,00          493.750,00         0,00            40.532,49        8,21            40.064,73        8,11           36.164,79        7,32            3.899,94          453.685,27
>
>
> 03.01.411A01.22703      Postales                                                           1.212,00                 0,00                 0,00                 0,00             1.212,00        0,00             1.208,23       99,69             1.208,23       99,69            1.208,23       99,69                0,00                 3,77
>
>
> 03.01.411A01.22704      Custodia, depósito y almacenaje.                                 219.293,00                 0,00                 0,00                 0,00          219.293,00         0,00             4.683,24        2,14             4.683,24        2,14            4.683,24        2,14                0,00          214.609,76
>
>
> 03.01.411A01.22706      Estudios y trabajos técnicos                                     257.392,00                 0,00                 0,00                 0,00          257.392,00         0,00           185.197,25       71,95           185.197,14       71,95          143.786,77       55,86           41.410,37           72.194,86
>
> ]===]
>
> local remove_re = [==[
>
>
>
> Cuentas Anuales%. Ejercicio %d+                                         +Pág%. %d+
>                     CUENTAS ANUALES DE LA ADMINISTRACIÓN GENERAL DE LA COMUNIDAD DE CASTILLA Y LEÓN%. EJERCICIO %d+
>
>
> EJECUCIÓN DEL PRESUPUESTO DE GASTOS DEL EJERCICIO %d+
> GASTOS POR APLICACIÓN
> ADMINISTRACIÓN GENERAL[^\n]*
> [^\n]+
>
> [^\n]+
>
> ]==]
>
> txt2 = txt2:gsub(remove_re, "")
> print(txt2)
> ====
> I'm expecting this output:
> ====
> 03.01.411A01.22700      Limpieza y aseo                                              1.210.830,00                    0,00                 0,00                0,00          1.210.830,00        0,00         1.075.110,90       88,79         1.021.998,36       84,40          871.196,21       71,95          150.802,15         188.831,64
>
>
> 03.01.411A01.22701      Seguridad                                                        493.750,00                 0,00                 0,00                 0,00          493.750,00         0,00            40.532,49        8,21            40.064,73        8,11           36.164,79        7,32            3.899,94          453.685,27
>
>
> 03.01.411A01.22703      Postales                                                           1.212,00                 0,00                 0,00                 0,00             1.212,00        0,00             1.208,23       99,69             1.208,23       99,69            1.208,23       99,69                0,00                 3,77
>
>
> 03.01.411A01.22704      Custodia, depósito y almacenaje.                                 219.293,00                 0,00                 0,00                 0,00          219.293,00         0,00             4.683,24        2,14             4.683,24        2,14            4.683,24        2,14                0,00          214.609,76
>
>
> 03.01.411A01.22706      Estudios y trabajos técnicos                                     257.392,00                 0,00                 0,00                 0,00          257.392,00         0,00           185.197,25       71,95           185.197,14       71,95          143.786,77       55,86           41.410,37           72.194,86
> ====
> but I'm getting this output:
> ====
> 03.01.411A01.22700      Limpieza y aseo                                              1.210.830,00                    0,00                 0,00                0,00          1.210.830,00        0,00         1.075.110,90       88,79         1.021.998,36       84,40          871.196,21       71,95          150.802,15         188.831,64
>
> 03.01.411A01.22704      Custodia, depósito y almacenaje.                                 219.293,00                 0,00                 0,00                 0,00          219.293,00         0,00             4.683,24        2,14             4.683,24        2,14            4.683,24        2,14                0,00          214.609,76
>
>
> 03.01.411A01.22706      Estudios y trabajos técnicos                                     257.392,00                 0,00                 0,00                 0,00          257.392,00         0,00           185.197,25       71,95           185.197,14       71,95          143.786,77       55,86           41.410,37           72.194,86
> ====
> I've tested with pcre2 and javascript and I do get my expected output with this javascript:
> ====
> const str = `
> 03.01.411A01.22700      Limpieza y aseo                                              1.210.830,00                    0,00                 0,00                0,00          1.210.830,00        0,00         1.075.110,90       88,79         1.021.998,36       84,40          871.196,21       71,95          150.802,15         188.831,64
>
>
>
>
> Cuentas Anuales. Ejercicio 2024                                                                                                                                                                                                                                                                                                    Pág. 64
>                     CUENTAS ANUALES DE LA ADMINISTRACIÓN GENERAL DE LA COMUNIDAD DE CASTILLA Y LEÓN. EJERCICIO 2024
>
>
> EJECUCIÓN DEL PRESUPUESTO DE GASTOS DEL EJERCICIO 2024
> GASTOS POR APLICACIÓN
> ADMINISTRACIÓN GENERAL                                                                                                                                                                                                                                                                          A FECHA DE 31/12/2024
>                                      APLICACION                            PRESUPUESTO INICIAL        MODIFICACIONES       MODIFICACIONES           TOTAL            PRESUPUESTO          (2)/(1) %   COMPROMISOS (3)      (3)/(2) %    OBLIGACIONES        (4)/(2) %      PAGOS            (5)/(2) %   OBLIG.PTES PAGO      REMANENTES DE
>
>                                                                                    (1)                  POSITIVAS            NEGATIVAS          MODIFICACIONES       DEFINITIVO (2)                                                    RECONOCIDAS (4)                  REALIZADOS (5)                                          CREDITO
>
>
> 03.01.411A01.22701      Seguridad                                                        493.750,00                 0,00                 0,00                 0,00          493.750,00         0,00            40.532,49        8,21            40.064,73        8,11           36.164,79        7,32            3.899,94          453.685,27
>
>
> 03.01.411A01.22703      Postales                                                           1.212,00                 0,00                 0,00                 0,00             1.212,00        0,00             1.208,23       99,69             1.208,23       99,69            1.208,23       99,69                0,00                 3,77
>
>
> 03.01.411A01.22704      Custodia, depósito y almacenaje.                                 219.293,00                 0,00                 0,00                 0,00          219.293,00         0,00             4.683,24        2,14             4.683,24        2,14            4.683,24        2,14                0,00          214.609,76
>
>
> 03.01.411A01.22706      Estudios y trabajos técnicos                                     257.392,00                 0,00                 0,00                 0,00          257.392,00         0,00           185.197,25       71,95           185.197,14       71,95          143.786,77       55,86           41.410,37           72.194,86
> `;
>
> const regex = new RegExp(`
>
>
> Cuentas Anuales\\. Ejercicio \\d+                                         +Pág\\. \\d+
>                     CUENTAS ANUALES DE LA ADMINISTRACIÓN GENERAL DE LA COMUNIDAD DE CASTILLA Y LEÓN\\. EJERCICIO \\d+
>
>
> EJECUCIÓN DEL PRESUPUESTO DE GASTOS DEL EJERCICIO \\d+
> GASTOS POR APLICACIÓN
> ADMINISTRACIÓN GENERAL[^\\n]*
> [^\\n]+
>
> [^\\n]+
>
> `, 'g')
>
> console.log(str.replaceAll(regex, ""));
> ====
> --
> You received this message because you are subscribed to the Google Groups "lua-l" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
> To view this discussion visit https://groups.google.com/d/msgid/lua-l/eeaad78a-27c0-4020-8f1c-dea4c5a604cdn%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups "lua-l" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/lua-l/6c3c7550-f6b3-4a45-8da1-0250398b88e1%40Spark.