Subject: RE: 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
|