RE: [xsl] java Regex call

Subject: RE: [xsl] java Regex call
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Thu, 10 Jul 2003 11:34:29 +0100
> 
> Hi, Does anyone have an example of using the java.util.regex 
> functions to return the "components" of the regex that matched.

Since you are using Saxon 7.6, I would suggest using the XSLT 2.0/XPath
2.0 regex functionality, rather than calling the underlying Java
routines directly. It's quite tricky to call the Java methods because
they are "stateful" - they remember where the last match was, and move
on to the next one, which doesn't fit well with XSLT's side-effect-free
philosophy.

This one looks reasonably easy to do using xsl:analyze-string, but I'm
not sufficiently clear on what you're trying to do to actually provide
specimen code.

Michael Kay

> 
> Example: if my regex is defined as:-
> 
>  (([^_]*)_PARA)|((.*?)(PARA)(.*?))
> 
>  and my input is "ABC_PARA"
> 
>  Then I need to know what portions of the input matched
>  each (if any) part of the regex groups, ([^_]*) and (.*?) 
> etc,.  in terms of group number and matching string.
> 
>  Something like  "ABC" matched in group 4
> 
> I can use the following to find if I have a match, but can't 
> seem to get to the next stage...
> 
>   <xsl:for-each select="$rule//Type">  
>     <xsl:variable name="tdlType" select="."/>
>       <xsl:choose>
>         <xsl:when test="regex:matches($regex, $tdlType)">
>           <xsl:variable name="ruleName" select="$rule//@name"/>
>           <RULE_MATCH><xsl:value-of select="$ruleName"/></RULE_MATCH>
>           <xsl:copy-of select="$regex"/>
>         </xsl:when>
>         <xsl:otherwise/>
>       </xsl:choose>
>     </xsl:for-each>
> 
> Also, I'm using the Saxon 7.6  processor.
> 
> Thanks, John.
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread