Mateusz Miodek
Es cierto que acostumbrarse a las RegExp requiere algo de práctica, pero una vez dominadas, resultan de gran utilidad. Si te interesa aprender más sobre expresiones regulares, te recomiendo echarle un vistazo a este tutorial.
También es una buena idea comprobar las expresiones regulares antes de aplicarlas. Existen muchas herramientas online para hacerlo. La que nosotros utilizamos se llama Rubular.
Ahora veamos ejemplos reales para descubrir cómo podemos utilizar las RegExp en la optimización del feed.
Ejemplo 1
Pongamos que necesitas crear un campo de «color» para el feed de Google Shopping. No tienes establecido un campo para el color, pero sabes que todos los títulos de tus productos terminan con el nombre de un color (por ejemplo, Adidas Zapatillas Running Snova Glide 5 Verde).
La mejor manera de hacer frente a esta situación es asignar el color del nombre y utilizar una regla de reemplazo adicional con expresiones regulares como esta:
Funciona de la siguiente manera:
- Divide cada nombre en dos grupos:
grupo 1 - todo excepto la última palabra representada por (.*) donde
.* => cualquier carácter único, independientemente del número de veces que aparezca; grupo 2 – última palabra representada por (s[^s]+) donde
s => cualquier carácter de espacio en blanco
[^ s] + => cualquier carácter único excepto el espacio en blanco que aparezca al menos una vez - Sustituye el valor existente, que puede describirse como (. *) (.*)(s[^s]+), por un nuevo valor que es el grupo 2 (escrito como $2 según la taxonomía de RegExp)
El resultado para el título de producto «Adidas Zapatillas Running Snova Glide 5 Verde» sería «Verde».
Ejemplo 2
Imaginemos que creas un campo de precio para un canal que acepta únicamente 2 dígitos decimales (por ejemplo, 12.45) y tus precios tienen 4 (12.4500). Una vez más, la regla de reemplazo con expresiones regulares te puede ser de gran utilidad. Para ajustar el formato, necesitamos configurarlo de la siguiente manera:
Al igual que en el ejemplo anterior, esta regla:
- Divide cada precio en 2 grupos:
grupo 1 - todo excepto los dos últimos dígitos decimales ([0-9]+.[0-9]{2}) donde
[0-9]+ => cualquier número entero
. => carácter . (punto)
([0-9]{2}) => cualquier número de 2 dígitos grupo 2 - los dos últimos dígitos decimales ([0-9]{2}) - Reemplaza el valor existente, que puede describirse como ([0-9]+.[0-9]{2})([0-9]{2}), por un nuevo valor, que sería el grupo 1 ($1)
El resultado para la cifra 12.4500 sería «12.45».
Cabe señalar que, de esta manera, no se redondea el precio, sino que se elimina directamente los dos últimos dígitos decimales.
Ejemplo 3
Supongamos que deseas establecer la categoría «product_type» como categoría principal de tus artículos (pongamos que son piezas de automóvil) en Google Shopping. Sin embargo, tu sistema solo tiene las rutas de categorías completas (por ejemplo, Piezas de automóvil > BMW> 320i> 2013).
En este caso, lo que debes hacer es eliminar todo lo que haya a partir de «>». La regla sería la siguiente:
donde aparezca
s>.* => cualquier carácter único seguido de «>» seguido de cualquier carácter único, independientemente del número de veces que aparezca.
El resultado sería «Piezas de automóvil», en lugar de «Piezas de automóvil> BMW> 320i> 2013».
Ejemplo 4
Para el último ejemplo, imaginemos que deseas utilizar un canal que requiere números UPC, pero que en tu sistema no todos los productos disponen de dicho número o que no todos los UPC se ajustan adecuadamente al formato de 12 dígitos. Si utilizas un feed en el que los UPC están vacíos o son incorrectos, el canal lo rechazará por completo. Lo que debes hacer es excluir dichos productos. Puedes conseguirlo mediante una única regla de exclusión y utilizando adivina qué... ¡expresiones regulares!
Lo que debes hacer es incluir únicamente aquellos productos cuyos UPC tengan exactamente 12 dígitos. En otras palabras, incluye los productos solo si el UPC coincide con la expresión regular ^[0-9]{12}$
Estos son solo algunos ejemplos de cómo puedes utilizar las expresiones regulares. Como norma general, siempre que se deba hacer una asignación compleja, las RegExp son tus mejores amigas.
Si tienes alguna duda o problema, déjanoslo en los comentarios e intentaremos encontrar una expresión regular adecuada para solucionarlo (si es posible).