The xsl:analyze-string element is new in XSLT 2.0. It applies a regular expression to a supplied string value. The string is split into a sequence of substrings, each of which is classified as either a matching substring (if it matches the regular expression) or a non-matching substring (if it doesn't). The substrings are then processed individually: the matching substrings by a xsl:matching-substring element that appears as a child of the xsl:analyze-string instruction, the non-matching substrings by a similar xsl:non-matching-substring element. If either of these is omitted, the relevant substrings are not processed.

The element has three attributes: select is an XPath expression whose value is the string to be analyzed; regex is the regular expression (which may be given as an attribute value template), and flags provides one or more Perl-like flags to control the way in which regular expression matching is performed, for example the value "m" indicates multi-line mode.

When processing matching substrings, it is possible to call the regex-group() function to find the parts of the matching substring that matched particular parenthesized groups within the regular expression.

There are examples of this element in the XSLT 2.0 Working Draft.