No soy muy ducho en escribir artículos, de hecho creo que nunca lo he hecho. Pero bueno tenía ganas de contar esta historia que no es trascendente pero me hacía ilusión.
Resulta que estoy realizando un algoritmo para leer unos datos de un documento HTML de la web para procesarlos posteriormente.
Que podía estar en el sofá con la tele y unos ganchitos, claro, pero mira me molan estos temas de tratamiento de cadenas, raro que es uno.
Sigo... entonces me hacía falta una expresión regular para eliminar las etiquetas HTML <cosas> para poder trabajar los datos quitando las molestias de las etiquetas. Que las expresiones regulares son un coñazo, sin duda, pero para estos menesteres de subcadenas van de muerte, entonces me puse a buscar.
Buscando por la web se encuentran estas expresiones regulares:
- regex = "<[^>]*>"
- regex = "\\<.*?\\>"
Y la verdad es que funcionan perfectamente en casi todos los casos, salvo cuando me hacen falta, claro, estas lineas HTML fallan:
- <tr>
- <td>Consumo de corriente [mA]</td>
- <td>< 20</td>
- </tr>
Cuando se pasan estas cadenas por el regex, falla como una escopeta de feria ya que el dato "< 20" desaparece del mapa, el filtro se lo carga y sólo queda "Consumo de corriente [mA]". Se me ha ido el dato, por quéeee... ¡lo necesitooooo!
Vuelta a la web, busco y más busco y no encuentro solución. Y sigo pensando... a ver si se me ocurre algo ya sé que se puede resolver a base de if() y de do{} while pero no es lo que me gusta, necesito un algoritmo global que funcione en todos los casos.
Y entonces, cuando ya no sabía que más mirar pienso, ¡Mosquis! el GPT, joder, no se me había ocurrido, voy a preguntarle al Chat este a ver que dice ya que es la pera limonera, sabe mucho y todo el mundo lo usa. Y le hago esta pregunta:
Tócate los cojones María Antonia, eso ya lo había probado yo, no me da solución, (aunque hay que reconocer que contestó a la primera) vuelta otra vez al principio. Pasa el día y otro y sigo con los quehaceres comunes y domésticos, lo normal...
Es domingo y estoy calentando la comida y mientras removía los fideos (que por cierto me estaban quedando de PM) entre ellos vi lo siguiente en mi cabeza:
- regex = "<[^<>]*>"
Llamo a mi hijo para que vigile el fuego y a regañadientes va a la cocina, - jolin papa siempre estás igual (es que lo acabo de sacar del LOL, pobre) Mientras él remueve los fideos voy a mi ordenador y lo pruebo. Meto la expresión, descargo la página y ¡¡BINGO!! Funciona !!! Todo por un puñetero carácter, ya ves...
Más tarde (después de comer) volví al GPT para preguntar de nuevo:
Buenoooo. El señor GPT se da cuenta del error, me da la razón e incluso me da las gracias, alucino pepinos de color violeta. Después de dar vueltas por el Duck, Google y similares, después de preguntar al ChatGPT, al final encontré yo la solución, toy contento.
P.D. Los fideos casi se queman, pero estaban buenos.