replace

Substitui as partes de uma string que casam com uma expressão regular

Descrição

A função fn:replace substitui as partes de uma string que casam com uma expressão regular. A sintaxe das expressões regulares é a do XML Schema, com algumas mudanças e acréscimos do XPath/XSLT. O argumento $pattern é uma expressão regular. É bom ter esse poder, mas, se você só quer trocar uma sequência de caracteres, não precisa conhecer expressões regulares: basta pôr em $pattern a string a trocar, desde que ela não tenha caracteres especiais.

O argumento $replacement é uma string (não um padrão) usada na substituição.

O argumento $flags dá opções a mais na interpretação da expressão regular, como o modo multilinha e ignorar maiúsculas e minúsculas.

Parâmetros

Descrição

input:string()

a string a alterar

pattern:string()

a expressão regular que casa com as partes a substituir

replacement:string()

a string de substituição

flags:string()

flags que controlam o modo multilinha, a diferença entre maiúsculas e minúsculas etc.

Exemplos

XPath

Resultado

replace('query', 'r', 'as')

queasy

replace('query', 'qu', 'quack')

quackery

replace('query', '[ry]', 'l')

quell

replace('query', '[ry]+', 'l')

quel

replace('query', 'z', 'a')

query

replace('query', 'query', '')

zero-length string

replace( (), 'r', 'as')

zero-length string

replace('query', 'r?', 'as')

Error FORX0003

replace('query', '(r', 'as')

Error FORX0002

replace('Chapter', '(Chap)|(Chapter)', 'x')

xter

Os exemplos a seguir mostram a diferença entre quantificadores relutantes e normais:

XPath

Resultado

replace('reluctant', 'r.*t', 'X')

X

replace('reluctant', 'r.*?t', 'X')

Xant

replace('aaah', 'a{2,3}', 'X')

Xh

replace('aaah', 'a{2,3}?', 'X')

Xah

replace('aaaah', 'a{2,3}', 'X')

Xah

replace('aaaah', 'a{2,3}?', 'X')

XXh

Os exemplos a seguir mostram o uso de subexpressões:

XPath

Resultado

replace('Chap 2...Chap 3...Chap 4...', 'Chap (\d)', 'Sec $1.0')

Sec 2.0...Sec 3.0...Sec 4.0...

replace('abc123', '([a-z])', '$1x')

axbxcx123

replace('2315551212', '(\d{3})(\d{3})(\d{4})', '($1) $2-$3')

  1. 555-1212

replace('2006-10-18', '\d{2}(\d{2})-(\d{2})-(\d{2})', '$2/$3/$1')

10/18/06

replace('25', '(\d+)', '\$$1.00')

$25.00

Veja também