Sensibilidad a Mayúsculas en el Matching - AWK

La sensibilidad a mayúsculas es normalmente significativa en expresiones regulares, también cuando casa caracteres ordinarios (por ejemplo, no con metacaracteres), y dentro de conjunto de caracteres. Por lo que una ‘w’ en una expresión regular encaja solamente con una ‘w’ minúscula y nunca con una ‘W’ mayúscula.

La forma más fácil de hace una búsqueda o encaje insensible a mayúsculas es usar el conjunto de caracteres: ‘[Ww]’. Sin embargo, esto puede ser embarazoso si necesitas usarlo a menudo; y puede hacer que la expresión regular sea más ilegible. Existen otras dos alternativas que podrías preferir.
Una forma de realizar una búsqueda insensible a mayúsculas en un punto en particular del programa es convertir el dato a un único tipo (mayúsculas o minúsculas), usando las funciones empotradas para manejo de cadenas tolower o toupper. Por ejemplo:

tolower($1) ~ /foo/    { ... }

convierte el primer campo a minúsculas antes de realizar una búsqueda o comparación contra dicho campo.

Otro método es fijar la variable IGNORECASE a un valor distinto de cero. Cuando IGNORECASE es distinta de cero, todas las operaciones de expresiones regulares son insensibles a mayúsculas/minúsculas. Cambiando el valor de la variable  IGNORECASE se puede controlar de forma dinámica la sensibilidad a mayúsculas/minúsculas de tu programa en tiempo de ejecución. La sensibilidad a mayúsculas/minúsculas está activada por defecto porque la variable IGNORECASE (como la mayoría de las variables) es inicializada a cero.

x = "aB"
if (x ~ /ab/) ...    # esta comprobación fallará IGNORECASE = 1
if (x ~ /ab/) ...    # esta comprobación tendrá éxito


Normalmente no puedes usar IGNORECASE para hacer que ciertas reglas sean insensibles a mayúsculas/minúsculas y otras reglas sean sensibles, porque no hay forma de fijar el valor de IGNORECASE solamente para el patrón de una regla en particular. Para hacer esto, debes usar los conjuntos de caracteres o tolower. Sin embargo, una cosa que puedes hacer solamente con IGNORECASE es activar o desactivar la sensibilidad a mayúsculas/minúsculas para todas las reglas de una vez.

IGNORECASE puede ser fijado en la línea de comando, o en una regla BEGIN. Fijar la variable IGNORECASE en la línea de comando puede ser una forma de hacer a un programa insensible a las mayúsculas/minúsculas sin tener que editarlo.

El valor de  IGNORECASE no tiene ningún efecto si  gawk está en modo compatibilidad. En modo compatibilidad la diferencia entre mayúsculas y minúsculas es siempre significativa.

Publicar un comentario

0 Comentarios