xsl-list
[Top] [All Lists]

Re: [xsl] Analyze-string Regex to Match Content within Curly Braces

2020-11-17 10:18:33
 Thank you Martin for the solution.
Thank you Dr. Kay for the summary reminder:
To cope with the specialness in AVTs, double them,
To cope with the specialness in regexes, backslash-escape them.
So regex = "\{{[a-z]+\}}"
Don
    On Tuesday, November 17, 2020, 07:43:44 AM CST, Michael Kay 
mike(_at_)saxonica(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:  
 
 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 KaySaxonica


On 17 Nov 2020, at 12:43, Don Smith dsmith_lockesmith(_at_)yahoo(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> 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.
DonXSL-List info and archiveEasyUnsubscribe(by email)

XSL-List info and archiveEasyUnsubscribe(by email)  
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>