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.