• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram

S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram
Technical Articles

Mejorar Regex Toy – Parte 1

By s4pcademy 


Este es el primero de una serie de seis blogs que describen cómo mejorar el probador de expresiones regulares conocido como Regex Toy, y cada blog describe una sola mejora de sus capacidades.

Nota: El uso de las palabras «mejorar» y «mejora» en la oración anterior no pretende sugerir que el SAP estándar Marco de mejora está involucrado en facilitar lo que se describe en esta serie de blogs. Además, por razones que se explicarán en el blog final, las mejoras discutidas en esta serie de seis blogs no se aplican a la versión 7.55 de NetWeaver (también conocida como CE 2008/OP 2020) y posteriores.

Fondo

En 2015 escribí un E-bite para SAP PRESS titulado Regex en ABAP: Coincidencia de patrones con expresiones regulares, que se convirtió en el primer E-bite sobre un tema de programación. Desde junio de 2022 ya no está disponible para su compra desde el sitio web de SAP PRESS.

Ese E-bite incluía un capítulo que describía los siguientes cuatro probadores de expresiones regulares:

  • Tormenta de expresiones regulares (ATENCIÓN: el enlace correspondiente no es una conexión segura)

Regex Toy se incluye con un sistema NetWeaver y, que yo sepa, es el único comprobador de expresiones regulares basado en ABAP. Su pantalla de presentación en ese momento se veía así:

Como señalé en el E-bite sobre Regex Toy:

… una sección de Entrada superior proporciona un campo Regex que acepta un patrón RegEx, y una sección de Texto inferior acepta el texto que se someterá al patrón RegEx. Los resultados coincidentes se muestran en la sección Coincidencias que sigue a la sección Entrada, pero requiere que el usuario seleccione un botón de opción correspondiente a uno de los comandos en la sección Opciones o que presione la tecla Intro mientras el cursor está posicionado en los campos Regex o Reemplazo que precede a la sección Opciones. El área de resultados coincidentes tiene un fondo blanco; las cadenas que coinciden con el patrón RegEx se muestran con una fuente de texto en primer plano en negrita roja, mientras que el texto que no coincide se muestra con una fuente de texto en primer plano negra sin negrita.

Esta es una herramienta magnífica mediante la cual se pueden probar los matices del comportamiento de RegEx en ABAP antes de aplicar un patrón al código productivo en desarrollo. … esta utilidad no solo indica si una cadena de texto tiene coincidencias con el patrón RegEx especificado, sino que también muestra en contexto dónde ocurren estas coincidencias.

…

Un artículo publicado por el autor de Regex Toy incluye un descargo de responsabilidad de que no es tanto una herramienta sino simplemente un juguete. Sin embargo, después de probarlo, puede estar de acuerdo en que el autor está siendo demasiado modesto con respecto a su utilidad y aplicabilidad como ayuda para el desarrollo.

Los otros tres probadores de expresiones regulares mencionados anteriormente están disponibles a través de Internet, y encontré que Regex Storm es el más útil de ellos. Durante el tiempo que pasé componiendo el contenido del E-bite, decidí experimentar con una copia de Regex Toy, cambiando su código fuente para determinar si podía hacer que se comportara más como Regex Storm. Una vez que estuve satisfecho con el resultado, decidí incluir el conjunto necesario de parches Regex Toy en su propio capítulo en el E-bite para que los lectores pudieran aplicarlos en su sitio para hacer que su Regex Toy también se comporte como Regex Storm.

Primer plano

Avance rápido hasta febrero de 2023 y me encontré en un sitio donde una vez más quería aplicar a una copia de Regex Toy los parches que había descrito en el E-bite. Para mi horror, descubrí que algunos de esos parches ya no funcionaban o describían la ubicación de un parche en el código que ya no se veía como cuando estaba escribiendo el E-Bite.

En 2015, cuando ideé por primera vez los parches que se aplicarían a Regex Toy, tenía disponible un sistema NetWeaver 7.4, pero ahora en 2023 tengo disponible un sistema 7.5. Una mirada rápida a los atributos del código fuente de Regex Toy indicó que el programa, lanzado por primera vez en 2006, ahora tenía una fecha de cambio de junio de 2015, dos meses antes de que E-bite estuviera disponible. En un sistema 7.5, su pantalla de presentación se ha cambiado para que se vea así:

Observe que el bloque Opciones ahora contiene una nueva casilla de verificación titulada EN LA TABLA. Además, los títulos de los botones de radio en el bloque Opciones se convirtieron a mayúsculas, con la opción anterior llamada Coincidencia ahora llamada FIND ^…$, como se muestra en la comparación a continuación:

Bloque de opciones con la versión 7.4:

Bloque de opciones con la versión 7.5:

Un error que cometí al describir estos parches de Regex Toy en el E-bite fue no proporcionar ninguna indicación sobre la versión del código a la que se aplicaban. En consecuencia, los parches descritos en esta serie de blogs se aplican al objeto de repositorio ABAP DEMO_REGEX_TOY que tiene una fecha de última modificación del 01/06/2015.

El motivo del primer parche.

  • A diferencia de Regex Storm, Regex Toy no observa espacios en blanco finales especificados en el patrón de expresión regular.

Inicie Regex Storm usando su navegador web favorito, luego copie y pegue el siguiente trabalenguas en el bloque de entrada:

Una mofeta se sentó en un tocón. El zorrillo thunk el muñón apestaba y el zorrillo thunk el zorrillo apestaba.

Asegúrese de copiarlo exactamente como se muestra, con mayúsculas al comienzo de cada primera palabra de una oración, puntos al final de las dos oraciones y dos espacios que separan el final de la primera oración del comienzo de la segunda.

Luego, en el bloque Patrón, especifique el valor «k», es decir, la letra minúscula «k» seguida de un solo espacio. Debería mostrar lo siguiente:

Como puede ver en la captura de pantalla anterior, utiliza colores de fondo verdes y azules alternos para resaltar cada ocurrencia en el trabalenguas donde la letra minúscula «k» es seguida inmediatamente por un espacio. Elimine el espacio final y se resaltarán todas las letras «k».

Antes de aplicar el primer parche

Ahora enciende Regex Toy, luego:

  • Pegue el mismo trabalenguas en el bloque de texto.
  • Coloque una marca de verificación en la casilla de verificación EN LA TABLA.
  • Seleccione el botón Todas las ocurrencias.
  • Especifique en la ranura Regex del bloque de entrada el valor «k», como se había especificado con Regex Storm.
  • Presiona enter.

Es importante que su cursor permanezca en el bloque Regex después del espacio que escribió en la posición del segundo carácter:

Como se muestra en la captura de pantalla anterior, debería encontrar que no observa el espacio final en la ranura Regex porque todas las letras minúsculas «k» están resaltadas, incluso aquellas que no van seguidas de un espacio.

Aplicación del primer parche

Usando su editor ABAP favorito, haga una copia del objeto de repositorio ABAP DEMO_REGEX_TOY, seleccionando copiar todos sus componentes asociados cuando se le solicite, luego coloque la serie de líneas que se muestra a continuación en el método principal delante de la línea que borra sub1 a sub6 (primera y última línea , que se muestra antes y después de una línea de comentario de todos los guiones, ya existen en el código como líneas 79 y 80, respectivamente):

079      ENDIF.
         " ------------------------------------
         " DEMO_REGEX_TOY enhancement #1
         " Enable explicit trailing spaces in pattern:
         data       : trailing_space type int4
                    , pattern_length type int4
                    .
         if sy-curow eq 02.
           trailing_space            = sy-cucol - 16.
           pattern_length            = strlen( pattern ).
           subtract pattern_length from trailing_space.
           while trailing_space gt 00.
             concatenate pattern
                         space
                    into pattern
                           respecting blanks.
             subtract 01 from trailing_space.
           endwhile.
         endif.
         " ------------------------------------
080      CLEAR: sub1, sub2, sub3, sub4, sub5, sub6.

Este es el mismo primer parche sin cambios del E-bite.

Después de aplicar el primer parche

Ahora active el programa, ejecútelo y repita el proceso utilizado anteriormente:

  • Pegue el mismo trabalenguas en el bloque de texto.
  • Coloque una marca de verificación en la casilla de verificación EN LA TABLA.
  • Seleccione el botón Todas las ocurrencias.
  • Especifique en la ranura Regex del bloque de entrada el valor «k», como se había especificado con Regex Storm.
  • Presiona enter.

Como se muestra en la captura de pantalla anterior, debería encontrar que ahora observa el espacio final en la ranura Regex porque solo se resaltan las letras minúsculas «k» seguidas de un espacio.

¿Que sigue?

Mientras que el primer parche proporciona una mejora a Regex Toy al permitir que se observen los espacios finales como parte del patrón de coincidencia, todavía es menos que óptimo porque las coincidencias encontradas por Regex Toy se resaltan con una fuente de texto de primer plano en negrita roja, lo que significa que hay no se aplicó resaltado a los espacios encontrados que coincidían con el patrón. Este problema se aborda en el próximo blog de esta serie, Mejora de Regex Toy – Parte 2.



Source link


mejorarparteRegexToy

Artículos relacionados


#SAP BTP  ·  nodejs  ·  Technical Articles
Ejecute NodeJs en SAP BTP y localmente, Parte – 2
Business Trends  ·  consumer products  ·  Midsize Enterprise  ·  SAP S/4HANA  ·  sme  ·  Sustainability  ·  Transformation Mindset
Estas estrategias de crecimiento sostenible pueden ayudar a las medianas empresas a mejorar más que la reputación de marca
SAP BTP NodeJs  ·  Technical Articles
Ejecute NodeJs en SAP BTP y localmente, Parte – 3

Deja tu comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

Publicación de agregación de intereses | Blogs de SAP
Previo
SAP Build 流程自动化 3月最新产品功能更新 | Blogs de SAP
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.
Cookies Para que este sitio funcione adecuadamente, a veces instalamos en los dispositivos de los usuarios pequeños ficheros de datos, conocidos como cookies. La mayoría de los grandes sitios web también lo hacen.
Aceptar
Cambiar ajustes
Configuración de Cookie Box
Configuración de Cookie Box

Ajustes de privacidad

Decida qué cookies quiere permitir. Puede cambiar estos ajustes en cualquier momento. Sin embargo, esto puede hacer que algunas funciones dejen de estar disponibles. Para obtener información sobre eliminar las cookies, por favor consulte la función de ayuda de su navegador. Aprenda más sobre las cookies que usamos.

Con el deslizador, puede habilitar o deshabilitar los diferentes tipos de cookies:

  • Bloquear todas
  • Essentials
  • Funcionalidad
  • Análisis
  • Publicidad

Este sitio web hará:

Este sitio web no:

  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
  • Recuerde sus detalles de inicio de sesión
  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
Guardar y cerrar