función replace

La función fn:replace compara cada conjunto de caracteres de una serie con un patrón específico y, a continuación, sustituye los caracteres que coinciden con el patrón por otro conjunto de caracteres.

Sintaxis

Read syntax diagramSkip visual syntax diagramfn:replace( source-string, pattern, replacement-string, flags)
source-string
Una serie que contiene caracteres que deben sustituirse.

serie-origen es un valor xs:string o la secuencia vacía.

pattern
Una expresión regular que se compara con serie-origen. Una expresión regular es un conjunto de caracteres, comodines y operadores que definen una serie o grupo de series en un patrón de búsqueda.

pattern es un valor xs:string.

replacement-string
Una serie que contiene caracteres que sustituyen a los caracteres que coinciden con el patrón de la serie-origen.

La serie-sustitución es un valor xs:string.

cadena de sustitución puede contener las variables $0 a $9. $0 representa toda la serie en pattern. La variable $1 a $9 representa una de las nueve posibles subexpresiones entre paréntesis en patrón. ($1 representa la primera subexpresión, $2 representa la segunda subexpresión, etc.)

Para utilizar el signo de dólar literal ($) en serie-sustitución, utilice la serie "\ $". Para utilizar la barra inclinada invertida literal (\) en serie-sustitución, utilice la serie "\\".

flags
Un valor xs: string que puede contener cualquiera de los valores siguientes que controlan la coincidencia de pattern con source-string:
s
Indica que el punto (.) sustituye a cualquier carácter.

Si no se especifica el distintivo s, el punto (.) sustituye cualquier carácter excepto el carácter de nueva línea (X'0A').

m
Indica que el signo de intercalación (^) sustituye el inicio de una línea (la posición después de un carácter de nueva línea), y el signo de dólar ($) sustituye el final de una línea (la posición antes de un carácter de nueva línea).

Si no se especifica el distintivo m, el signo de intercalación (^) sustituye el inicio de una serie y el signo de dólar ($) sustituye el final de la serie.

i
Indica que la coincidencia no distingue entre mayúsculas y minúsculas.

Si no se especifica el distintivo i, se realiza una comparación sensible a las mayúsculas y minúsculas.

x
Indica que los caracteres de espacio en blanco dentro del patrón se ignoran.

Si no se especifica el distintivo x, los caracteres de espacio en blanco se utilizan para la comparación.

Limitation of length

La longitud de serie-origen, patrón y serie-sustitución está limitada a 32000 bytes.

Valor devuelto

Si serie-origen no es la secuencia vacía, el valor devuelto es una serie que resulta cuando se realizan las siguientes operaciones en serie-origen:
  • Se buscan en serie-origen los caracteres que coinciden con patrón. Si pattern contiene dos o más conjuntos de caracteres alternativos, el primer conjunto de caracteres del pattern que coincide con los caracteres de source-string se considera el patrón coincidente.
  • Cada conjunto de caracteres de serie-origen que coincide con patrón se sustituye por serie-sustitución. Si serie-sustitución contiene cualquiera de las variables $0 a $9, la subserie de serie-origen que coincide con la subexpresión en patrón que corresponde a la variable sustituye a la variable en serie-sustitución. A continuación, la serie-sustitución modificada se inserta en serie-fuente. Si una variable no tiene una subexpresión correspondiente en pattern porque hay más variables que subexpresiones o una subexpresión no tiene una coincidencia en serie-fuente, una serie de longitud 0 sustituye a la variable en serie-sustitución.

Si pattern no se encuentra en source-string, se devuelve un error.

Si serie-origen es la secuencia vacía, se devuelve una serie de longitud 0.

ejemplos

Ejemplo de sustitución de una subserie por otra subserie: La función siguiente sustituye todas las instancias de "a" en la serie "abbcacadbdcd" por "ba".
fn:replace("abbcacadbdcd","a","ba")

El valor devuelto es "babbcbacbadbdcd".

Ejemplo de sustitución de una subserie utilizando una serie de sustitución con variables: La siguiente función sustituye "a" y el carácter que sigue a "a" por dos instancias del carácter que sigue a "a" en "abbcacadbdcd".
fn:replace("abbcacadbdcd","a(.)","$1$1")

El valor devuelto es "bbbcccddbdcd".