Previous | Next | Indexes
Zvon > Tutorials > XSLT 2.0 Tutorial > Transforming strings with regular expressions (4/8) >

Using matched substrings in replacements

In the second argument brackets can be used to create substring which can be referred to in the third argument using "$number" syntax.

If the number following "$" in the third argument is higher then number of brackets in the second one an empty string is used as the replacement (see the second xsl:value-of in the example).

"$0" refers to the whole matched string as in the third xsl:value-of.

XSLT

      <xsl:stylesheet
                  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  version="2.0">
            <xsl:output  method="xml"
                        indent="yes"
                        omit-xml-declaration="yes"/>

            <xsl:template  match="/aaa">
                  <xxx>
                        <xsl:value-of  select="replace(.,'(\d+)-(\d+)-(\d+)','$3$2::$1')"/>
                  </xxx>
                  <yyy>
                        <xsl:value-of  select="replace(.,'(\d+)-\d+-\d+','$3$2::$1')"/>
                  </yyy>
                  <zzz>
                        <xsl:value-of  select="replace(.,'(\d+)-(\d+)-(\d+)','$0 --- $3/$1')"/>
                  </zzz>
            </xsl:template>

      </xsl:stylesheet>
XML

      <aaa>111-222-33</aaa>
Output

      <xxx>33222::111</xxx>
      <yyy>::111</yyy>
      <zzz>111-222-33 --- 33/111</zzz>


Previous chapter: Functions operating on strings
Next chapter: Number Formatting
Previous page: Replacing patterns in a string - replace function
Next page: Escaping special characters