• 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 4

By s4pcademy 


Este es el cuarto 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.

Antes de aplicar el cuarto parche

El blog anterior en esta serie describió cómo parchear una copia de Regex Toy para permitirle identificar coincidencias incluso cuando el texto coincidente se extiende a ambos lados de los saltos de línea implícitos, pero terminó con una descripción de un problema por el cual Regex Toy formatea el texto en el bloque de coincidencias de modo que se ejecuta más allá el área visible de la ventana y está acompañado por una barra de desplazamiento horizontal. Para ilustrar este problema nuevamente, ejecute Regex Toy mejorado y siga estos pasos:

  • Pegue el siguiente trabalenguas en el bloque de texto:

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

  • 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 la siguiente cadena

la mofeta

Como se muestra en la captura de pantalla anterior, el texto se desplaza hacia la derecha del área visible de la ventana de coincidencias, lo que requiere el uso de la barra de desplazamiento horizontal para verlo.

Ahora haga lo mismo con Regex Storm, seleccionando la casilla de verificación Ignorar caso:

Como se muestra en la captura de pantalla anterior, con Regex Storm el texto no se desplaza hacia la derecha del área visible del bloque de entrada.

El motivo del cuarto parche.

  • A diferencia de Regex Storm, Regex Toy no facilita que el texto que se muestra en el bloque de coincidencias se ejecute más allá de las restricciones del área visible de la ventana de coincidencias.

Aplicación del cuarto parche

Usando su editor ABAP favorito, edite la copia del objeto de repositorio ABAP DEMO_REGEX_TOY que contiene los parches anteriores y aplique el siguiente cambio de 2 pasos en la visualización del método:

1. Antes de la instrucción CONCATENATE LINES OF, inserte el siguiente conjunto de líneas (la primera y la última línea, que se muestran antes y después de una línea de comentario de todos los guiones, ya existen en el código como líneas 216 y 217, respectivamente):

216   APPEND '<html><body><font face="Arial monospaced for ...
      " -----------------------------------
      " DEMO_REGEX_TOY enhancement #4
      " Format result text using approximate window width
      " specified by line_len:
      constants     : html_space     type string value '&nbsp;'
                    , html_special_character_start
                                     type string value '&'
                    , html_special_character_end
                                     type string value ';'
                    , html_format_start
                                     type string value '<'
                    , html_format_end
                                     type string value '>'
                    .
      data          : visible_text_length
                                     type int4
                    , html_last_space_length
                                     type int4
                    , cause_line_break
                                     type flag
                    , html_string    type string
                    , html_excess    type string
                    , html_stack     type standard table
                                       of string
                    .
      loop at result_it
         into result_wa.
        clear: html_string, visible_text_length.
        while strlen( result_wa ) gt 00.
          case result_wa+00(01).
            when html_format_start.
              while result_wa+00(01) ne html_format_end.
                concatenate html_string
                            result_wa+00(01)
                       into html_string.
                shift result_wa left by 01 places.
              endwhile.
            when html_special_character_start.
              if strlen( result_wa ) ge 06.
                if result_wa+00(06) eq html_space.
                  if visible_text_length gt line_len.
                    cause_line_break = abap_true.
                  endif.
                endif.
              endif.
              while result_wa+00(01) ne
                    html_special_character_end.
                concatenate html_string
                            result_wa+00(01)
                       into html_string.
                shift result_wa left by 01 places.
              endwhile.
              add 01 to visible_text_length.
              if cause_line_break eq abap_false.
                html_last_space_length
                                     = strlen( html_string ) + 01.
              endif.
            when others.
              add 01 to visible_text_length.
          endcase.
          concatenate html_string
                      result_wa+00(01)
                 into html_string.
          shift result_wa left by 01 places.
          if cause_line_break eq abap_true.
            clear html_excess.
            if html_last_space_length gt 00.
              html_excess =
                     substring( val = html_string
                                off = html_last_space_length ).
              html_string =
                     substring( val = html_string
                                len = html_last_space_length ).
            endif.
            append html_string
                to html_stack.
            clear: html_string, html_last_space_length.
            visible_text_length      = strlen( html_string ).
            cause_line_break         = abap_false.
            if strlen( html_excess ) gt 00.
              concatenate html_excess
                          result_wa
                     into result_wa.
            endif.
          endif.
        endwhile.
        append html_string
            to html_stack.
      endloop.
      " -----------------------------------
217   CONCATENATE LINES OF result_it INTO result_wa ...

2. Luego cambie la instrucción CONCATENATE LINES OF de

CONCATENATE LINES OF result_it INTO result_wa …

a

CONCATENATE LINES OF html_stack INTO result_wa …

Este es el mismo cuarto parche sin cambios desde el E-bite.

Después de aplicar el cuarto parche

Ahora activa el programa y ejecútalo usando el mismo proceso descrito anteriormente:

  • Pegue el siguiente trabalenguas en el bloque de texto:

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

  • 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 la siguiente cadena

la mofeta

Como se muestra en la captura de pantalla anterior, debería encontrar que ahora se encuentran las mismas dos coincidencias, pero el texto en el bloque Coincidencias ya no se desplaza hacia la derecha de su área visible.

¿Que sigue?

Ahora intente la siguiente prueba de expresión regular:

  • Pegue la siguiente primera oración del trabalenguas en el bloque de texto:

A
zorrillo
se sentó
en
a
tocón.

de modo que cada palabra vaya seguida de un salto de línea explícito que la coloque en su propia línea, como se muestra arriba.

  • Coloque una marca de verificación en la casilla de verificación EN LA TABLA.
  • Seleccione el botón Todas las ocurrencias.
  • Especifique un carácter de un solo punto en la ranura Regex
  • Presiona enter.

Como se muestra en la captura de pantalla anterior, debería encontrar que ahora cada carácter del Texto coincide con el patrón de expresión regular, como debería ser.

Nota: El carácter de punto es el carácter comodín aplicable a los patrones de expresiones regulares, lo que indica que se debe hacer coincidir cualquier carácter en esa posición en el texto, proporcionando la misma funcionalidad a las expresiones regulares que el carácter comodín ‘+’ proporciona con patrones especificados para rangos y declaraciones de opciones de selección. en SAP.

Sin embargo, observe que el texto ya no está formateado en la ventana Coincidencias con los saltos de línea explícitos proporcionados con el contenido de la ventana Texto.

A continuación, intente lo mismo con Regex Storm:

Como se muestra en la captura de pantalla anterior, Regex Storm observa y retiene saltos de línea explícitos.

Mientras que el cuarto parche proporciona una mejora a Regex Toy al permitirle mantener el texto de las coincidencias dentro de los límites de su ventana, ya no observa saltos de línea explícitos. Este problema se aborda en el próximo blog de esta serie, Mejora de Regex Toy – Parte 5.



Source link


mejorarparteRegexToy

Artículos relacionados


Intelligent Selling Services  ·  merchandising  ·  Product Information
Optimice los resultados de merchandising con servicios de venta inteligente para SAP Commerce (parte 2)
Technical Articles
Mejorar Regex Toy – Parte 3
Master Data Integration  ·  Technical Articles
Integración de la fuerza laboral desde el servicio de integración de datos maestros a SAP S/4HANA Cloud – Parte 2

Deja tu comentario Cancelar la respuesta

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

*

*

Primera mesa redonda de clientes y socios para el entorno SAP BTP ABAP
Previo
Configure un logotipo para su aplicación en la nube
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