Re: Analyze-string Regex to Match Content within Curly Braces
| Newsgroups | gmane.text.xml.xsl.general.mulberrytech |
|---|---|
| Message-ID | <[email protected]> |
Curly braces are special in AVTs and they are special in regexes.
To cope with the specialness in AVTs, double them,
To cope with the specialness in regexes, backslash-escape them.
So regex = "\{{[a-z]+\}}"
should do the trick; or as Martin suggests, remove the AVT problem by using a variable (making sure you have expand-text="no")
Michael Kay
Saxonica
> On 17 Nov 2020, at 12:43, Don Smith [email protected] <[email protected]> wrote:
>
> Once again I find myself at a loss when trying to write a regex in analyze-string that matches on an open/close curly brace combination. I'm using XSLT 2.0 and Saxon PE-9.6.0.7.
>
> Here's an example of the text content:
>
> <text>In the be{opthyphen}gin{opthyphen}ning</text>
>
> I need to match all occurrences (none nested) of an open and close curly brace with the text that occurs in-between.
>
> I started with this successful regex in a non-XSLT context:
>
> {[a-z]+}
>
> Then because the analyze-string @regex is an AVT I double the curly braces:
>
> {{[a-z]+}}
>
> thus:
>
> <xsl:analyze-string select="$content" regex="{{[a-z]+}}" >
>
> That produces the compile error "Syntax error at char 0 in regular expression. No expression before quantifier". I've tried everything I can think of in terms of using escapes, etc. I've also tried defining the regex as a variable and then referencing it from @regex. But I'm just missing something in the regex itself (I think). All help is appreciated.
>
> Don
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by email <>)
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/3329386
or by email: [email protected]
--~--