
Este es el segundo 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.
El blog anterior en esta serie describió cómo parchear una copia de Regex Toy para que pueda observar los espacios en blanco finales que aparecen en el patrón de expresión regular. Ejecute esa copia mejorada de Regex Toy y siga estos pasos:
Una mofeta se sentó en un tocón. El zorrillo thunk el muñón apestaba y el zorrillo thunk el zorrillo apestaba.
Como se muestra en la captura de pantalla anterior, en función de la posición del cursor cuando presionamos Intro, los espacios finales especificados en la ranura Regex se observan al buscar coincidencias en el bloque Texto, y el bloque Coincidencias ahora muestra las mismas seis coincidencias encontradas por Regex Storm, como se muestra en la siguiente captura de pantalla:
Como se ilustra arriba, Regex Storm usa colores de fondo verdes y azules alternos para mostrar coincidencias, pero Regex Toy usa un color de primer plano rojo, dejando que los espacios que coincidan con el patrón aparezcan de la misma manera que los espacios que no coincidan.
Con su editor ABAP favorito, edite la copia del objeto de repositorio ABAP DEMO_REGEX_TOY que contiene el primer parche y coloque la serie de líneas que se muestra a continuación en la visualización del método después de la línea final de la serie de declaraciones REPLACE ALL OCCURRENCES OF (primera y ú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 183 y 185, respectivamente):
183 '@@tgr@@' IN TABLE result_it WITH '</b></font>'.
" ------------------------------------
" DEMO_REGEX_TOY enhancement #2
" Change highlighting from single foreground color to
" alternating background colors:
constants : color_red type string
value 'color="#FF0000"'
, background_color_green
type string
value 'style=background-color:"#B6D840"'
, background_color_blue
type string
value 'style=background-color:"#98CCE8"'
.
data : color_toggle type int4
, replacement_color
type string
.
clear sy-subrc.
while sy-subrc is initial.
color_toggle = 01 - color_toggle.
if color_toggle eq 00.
replacement_color = background_color_blue.
else.
replacement_color = background_color_green.
endif.
replace first occurrence of color_red in table result_it
with replacement_color.
endwhile.
" ------------------------------------
184
185 CLEAR result_html.
Este es el mismo segundo parche sin cambios del E-bite. Debería encontrar, como lo hice recientemente, que con un sistema NetWeaver 7.5 este parche hace que Regex Toy para no trabajar en absoluto! Para que funcione, debe ajustar los dos valores de las constantes denominadas background_color_green y background_color_blue, como se muestra a continuación:
Para el valor de la constante background_color_green,
de
value 'style=background-color:"#B6D840"'
a
value 'style="background-color:#B6D840"'
Para el valor de la constante background_color_blue,
de
value 'style=background-color:"#98CCE8"'
a
value 'style="background-color:#98CCE8"'
Observe que en ambos casos el cambio sutil es que el valor que sigue a la etiqueta HTML “style=” debe incluir la cadena ‘background-color:’ entre comillas.
Aparte: Cuando comencé a investigar por qué el parche original de E-bite ya no funcionaba en mi versión de Netweaver 7.5, aprendí que la etiqueta HTML ‘fuente’ ya no es compatible con HTML5, y que se recomienda que la etiqueta ‘estilo’ sea usado en su lugar. Supongo que nunca sabré si ese parche original realmente funcionó o si moví por error la ubicación de las comillas de apertura antes de que el E-bite se imprimiera, pero suponiendo que funcionó, sospecho que, en algún momento después del Netweaver 7.4 versión que usé originalmente, es posible que SAP haya actualizado su compatibilidad con la representación de HTML para cumplir con HTML5, y puede explicar por qué el parche original ya no se reconoce como HTML válido.
Ahora activa el programa y ejecútalo usando el mismo proceso descrito anteriormente:
Como se muestra en la captura de pantalla anterior, debería encontrar que ahora usa el mismo tipo de color de fondo verde y azul alternado para identificar aquellas partes del texto que coinciden con el patrón Regex, como se usa con Regex Storm, y ahora esos espacios coinciden con el el patrón aparece resaltado.
Ahora repita el proceso con Regex Storm y Regex Toy, pero esta vez cambie el patrón de expresión regular a la siguiente cadena de 2 palabras
la mofeta
e indicar con ambos probadores que ignoren mayúsculas y minúsculas.
Con Regex Storm deberías ver esto:
Con Regex Toy deberías ver esto:
Como se muestra en la captura de pantalla anterior, debe encontrar que Regex Toy solo encuentra la primera de las dos cadenas encontradas por Regex Storm.
Mientras que el segundo parche proporciona una mejora para Regex Toy al permitir que se identifiquen los espacios que coinciden con el patrón, no puede encontrar la cadena «la mofeta» donde implícitamente se divide en dos líneas en el bloque de texto. Este problema se aborda en el próximo blog de esta serie, Mejorar Regex Toy – Parte 3.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073