saxon:replace-with

Uses a regular expression to perform string replacement; substrings that match the regex are converted to their replacement strings by calling a user-supplied function.

replace-with($in as xs:string?, $regex as xs:string, $replacer as function(xs:string) as xs:string) ➔ xs:string

Arguments

 

$in

xs:string?

The input string

 

$regex

xs:string

The regular expression

 

$replacer

function(xs:string) as xs:string

User-supplied function, which is called to convert the matching substrings into their replacements

Result

xs:string

replace-with($in as xs:string?, $regex as xs:string, $replacer as function(xs:string) as xs:string, $flags as xs:string) ➔ xs:string

Arguments

 

$in

xs:string?

The input string

 

$regex

xs:string

The regular expression

 

$replacer

function(xs:string) as xs:string

User-supplied function, which is called to convert the matching substrings into their replacements

 

$flags

xs:string

Regular expression flags

Result

xs:string

Namespace

http://saxon.sf.net/

Notes on the Saxon implementation

Available since Saxon 10.

Details

This function is similar to the fn:replace function, but instead of supplying a replacement string, the caller supplies a callback function which will be invoked to calculate a replacement for each matching substring in the input.

The string returned by the callback function is inserted "as is" into the result string; "$" and "\" are not recognized as special characters.

For example:

  • replace-with("Registration: abc123", "[a-z]{3}[0-9]{3}", upper-case#1) returns "Registration: ABC123".

  • replace-with("Part 2 Chapter 5", "[0-9]+", function($in){string(number($in)+1)} returns "Part 3 Chapter 6".

The regular expression must not be one that matches a zero-length string.

Note: the callback function does not have access to matching groups within the matched substring, only to the matched substring as a whole.