Habilite JavaScript para visualizar esta página.

Altova MapForce 2022 Professional Edition

MapForce admite el uso de expresiones regulares en el parámetro pattern de las funciones match-pattern y tokenize-regexp para buscar cadenas concretas. También puede usar algunas de las funciones de las expresiones regulares al filtrar los nodos a los que quiere aplicar una función de nodo o un valor predeterminado. Consulte también el apartado Aplicar funciones de nodo y valores predeterminados de forma condicional.

 

La sintaxis y la semántica de las expresiones regulares para XLST y XQuery es la definida en https://www.w3.org/TR/xmlschema-2/. Tenga en cuenta que la sintaxis de las expresiones regulares varía de un lenguaje de programación a otro.

 

Nota:al generar código C++, C# o Java, las características avanzadas de la sintaxis de la expresión regular pueden variar ligeramente. Consulte la documentación regex de cada lenguaje para más información.

 

Terminología

Para analizar la terminología básica de las expresiones regulares vamos a analizar la función tokenize-regexp como ejemplo. Esta función divide texto en una secuencia de cadenas con ayuda de expresiones regulares. Para ello la función toma estos parámetros de entrada:

 

input

La cadena que la función debe procesar y en la que trabaja la expresión regular.

pattern

La expresión regular que se va a aplicar.

flags

Es un parámetro opcional para definir cómo se debe interpretar la expresión regular con parámetros flag, véase más abajo.

 

En la asignación siguiente la cadena de entrada es "Altova MapForce". El parámetro pattern es un carácter de espacio y no se usan parámetros flag.

mf-func-tokenize-regexp-example1

 

El texto se divide donde haya un espacio, por lo que el resultado de la asignación es:

 

<items>
  <item>Altova</item>
  <item>MapForce</item>
</items>

 

Observe que la función tokenize-regexp excluye del resultado los caracteres que coinciden con ese parámetro. En otras palabras, en este ejemplo el espacio se omite en el resultado.

 

El ejemplo anterior es muy básico y se puede conseguir el mismo resultado sin expresiones regulares con la función tokenize. En un caso práctico, el parámetro pattern contendría una expresión regular más compleja. Una expresión regular puede contener cualquiera de estos elementos:

 

Literales

Clases de caracteres

Intervalos de caracteres

Clases negadas

Metacaracteres

Cuantificadores

 

Literales

Use literales para que los caracteres que coincidan sean idénticos a los que indica. Por ejemplo, si la cadena de entrada es abracadabra y pattern es el literal br, el resultado es:

 

<items>
  <item>a</item>
  <item>acada</item>
  <item>a</item>
</items>

 

La explicación es que el literal br encontró dos coincidencias en la cadena de entrada abracadabra. Una vez omitidos esos caracteres del resultado, queda la secuencia de tres cadenas que se ve en el extracto de código.

 

Clases de caracteres []

Conjunto de caracteres entre corchetes.

 

Solamente se busca uno de los caracteres que aparecen entre corchetes.

 

pattern

[aeiou]

Busca una vocal en minúsculas.

 

pattern

[mj]ust

Busca must o just.

 

No olvide que el parámetro pattern distingue entre mayúsculas y minúsculas. Por ejemplo, a no encontrará A.

 

Intervalos de caracteres [a-z]

 

Crea el intervalo comprendido entre dos caracteres. Solamente se encontrará uno de los caracteres en cada búsqueda.

 

pattern

[a-z]

Busca cualquier carácter de la a a la z que esté en minúsculas.

 

Clases negadas [^]

 

Si usa el acento circunflejo como primer carácter tras el corchete de apertura, se niega la clase de caracteres.

 

pattern

[^a-z]

Busca caracteres que no estén en la clase de caracteres, incluidas las líneas nuevas.

 

Metacaracteres "."

Este metacarácter busca un solo carácter, sea cual sea (excepto líneas nuevas)

 

pattern

.

Busca un solo carácter, sea cual sea.

 

Cuantificadores ? + * {}

Los cuantificadores definen cuántas veces debe aparecer un componente de la expresión regular dentro de la cadena input para que la búsqueda obtenga resultados.

 


?



cero o una

busca cero o una coincidencia de la cadena precedente (la cadena es opcional)





+



una o más

busca una o más coincidencias de la cadena precedente





*



cero o más

busca cero o más coincidencias de la cadena precendente





{}



mínimo/máximo de repeticiones

número de repeticiones de la cadena o trozo



p. ej. mo{1,3} encuentra mo, moo, mooo.

 

 

() subpatrones

los paréntesis se usan para agrupar partes de la expresión regular.

 

| Alternancia/OR

permite probar de izquierda a derecha las subexpresiones

(horse|make) sense encuentra horse sense o make sense

 

Parámetro flags

Estos parámetros opcionales definen cómo se debe interpretar la expresión regular. Para establecer las opciones se usan letras, que pueden estar en cualquier orden y se pueden repetir.

 

s

Si está presente, el proceso de búsqueda opera en el modo dot-all.

 

El metacarácter "." encuentra un carácter, sea el que sea. Si la cadena de entrada input contiene hello y world en dos líneas diferentes, la expresión hello*world solamente encontrará resultados si se establece la marca flag s.

 

m

Si está presente, el proceso de búsqueda opera en el modo multilínea.

 

En el modo multilínea el acento circunflejo ^ busca el principio de una línea, sea cual sea. Es decir, el inicio de una cadena entera y el primer carácter que aparece después del carácter de línea nueva.

 

El carácter de dólar $ busca el fin de una línea, sea cual sea. Es decir, el final de una cadena entera y el primer carácter que aparece antes del carácter de línea nueva.

 

El carácter de línea nueva es #x0A.

 

i

Si está presente, el proceso de búsqueda no distingue entre mayúsculas y minúsculas.

La expresión regular [a-z] más la marca i encontrará todas las letras de la a-z (en minúsculas) y entre A-Z (en mayúsculas).

 

mf-func-tokenize-regexp-example2

x

Si está presente, los caracteres de espacio en blanco se quitan de la expresión regular antes de iniciar el proceso de búsqueda. Los caracteres de espacio en blanco son #x09, #x0A, #x0D y #x20.

 

Excepción:

Los caracteres de espacio en blanco sin expresiones de clases de caracteres no se eliminan (por ejemplo, [#x20]).

 

Nota: cuando se genera código, las características avanzadas de la sintaxis regex pueden variar de unos lenguajes a otros. Para más información consulte la documentación de su lenguaje.

 

© 2015-2021 Altova GmbH