Operador matches

En una expresión lógica puede comparar una expresión de serie con otra serie (llamada criterio match) por posiciones de caracteres de izquierda a derecha. La utilización de esta característica es parecida a la utilización de expresiones regulares en UNIX o Perl.

A continuación se ofrece un ejemplo:

  // la variable myVar01 es la expresión de serie 
  // cuyo contenido se comparará con un criterio match
  myVar01 = "abcdef";

  // la expresión lógica siguiente evalúa a "true" 
  if (myVar01 matches "a?c*")
    ;
  end

El criterio match puede ser un literal o un elemento de tipo CHAR o MBCHAR o un elemento de tipo UNICODE. Puede incluir cualquiera de estos caracteres en el criterio match:

*
Actúa como un comodín, emparejando cero o más caracteres de la expresión de serie
?
Actúa como un comodín, emparejando un solo carácter de la expresión de serie
[ ]
Actúa como un delimitador tal que cualquiera de los caracteres entre los dos corchetes es válido como coincidencia para el siguiente carácter de la expresión de serie. El componente siguiente de un criterio match, por ejemplo, indica que a, b o c es válido como coincidencia:
  [abc]
-
Crea un rango dentro de los corchetes delimitadores tal que cualquier carácter dentro del rango es válido como coincidencia para el carácter siguiente de la expresión de serie. El componente siguiente de un criterio match, por ejemplo, indica que a, b o c es válido como coincidencia:
  [a-c]

El guión (-) no tiene un significado especial fuera de los corchetes delimitadores.

^
Crea una regla comodín tal que, si el signo de intercalación (^) es el primer carácter dentro de los corchetes delimitadores, cualquier carácter distinto de los caracteres delimitados será una coincidencia válida para el siguiente carácter de la expresión de serie. El componente siguiente de un criterio match, por ejemplo, indica que cualquier carácter distinto de a, b o c es válido como coincidencia:
  [^abc]
El signo de intercalación no tiene un significado especial en estos casos:
  • Está fuera de los corchetes delimitadores
  • Está dentro de los corchetes delimitadores, pero no en la primera posición
\
Indica que el carácter siguiente debe compararse con un solo carácter de la expresión de la serie. La barra inclinada invertida (\) se llama carácter de escape porque causa un escape del proceso habitual; el carácter de escape no se compara con ningún carácter de la expresión de serie.

El carácter de escape precede habitualmente a un carácter que de lo contrario sería relevante en el critrerio match; por ejemplo, un asterisco (*) o un signo de interrogación (?).

Cuando utilice la barra inclinada invertida como un carácter de escape (como en el comportamiento por omisión), surge un problema porque EGL utiliza el mismo carácter de escape para permitir la inclusión de unas comillas simples en cualquier expresión de texto. En el contexto de un criterio match debe especificar dos barras inclinadas invertidas porque el texto disponible en tiempo de ejecución es el texto al que le falta la barra inclinada invertida inicial.

Es aconsejable evitar este problema. Especifique otro carácter como el carácter de escape utilizando la cláusula de escape tal como se muestra en un ejemplo posterior. Sin embargo, no puede utilizar unas comillas (") como carácter de escape.

Cualquier otro carácter en matchCriterion es un literal comparado con un solo carácter de la expresión serie.

El ejemplo siguiente muestra la utilización de una cláusula de escape:
  // la variable myVar01 es la expresión de serie 
  // cuyo contenido se comparará con un criterio match
  myVar01 = "ab*def";

  // la expresión lógica siguiente evalúa a "true" 
  if (myVar01 matches "ab\\*[abcd][abcde][^a-e]")
    ;
  end

  // la expresión lógica siguiente evalúa a "true"
  if (myVar01 matches "ab+*def" escape "+")
    ;
  end

Consulta relacionada
Sentencias EGL
Expresiones lógicas
Expresiones de texto

Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.