Subject: Re: [xsl] Need an XPath expression which returns all xs:pattern elements containing a regex that permits an unbounded number of characters From: "David Carlisle d.p.carlisle@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 4 Apr 2024 16:50:15 -0000 |
On Thu, 4 Apr 2024 at 17:10, Michael Kay michaelkay90@xxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > I don't think these rules handle the fact that `*` and `+` within square > brackets are ordinary characters and do not need to be escaped. > > Michael Kay > Saxonica > > > On 4 Apr 2024, at 16:46, Roger L Costello costello@xxxxxxxxx < > xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > > > David Carlisle devised a brilliant approach: > > > > Do a series of replace operations: > > > > remove all whitespace: > > > > replace(@value,'\s','') > > > > replace \-quoted characters by x: > > > > replace(@value,'\\.','x') > > > > replace {99,} constructs by * > > > > replace(@value,'\{[0-9]+,\}','*') > > > > Here are the replaces, inlined: > > > > replace(replace(replace(@value,'\{[0-9]+,\}','*'),'\\.','x'),'\s','') > you have inlined these in the wrong order. You need to remove space first otherwise { 5, } won't get replaced but removing space will break \ * turning it in to a quoted \* it's all fixable with care...... probably safer not to remove space but instead allow space in '\{[0-9]+,\}','*') so '\{\s*[0-9]+\s*,\s*\}','*') are you sure you want to do this at all? :-) > > > > Here are the results of applying the replaces to some regexes: > > > > A* --> apply replaces --> A* > > A+ --> apply replaces --> A+ > > A\* --> apply replaces --> Ax > > A\+ --> apply replaces --> Ax > > A{0,} --> apply replaces --> A* > > A{1,} --> apply replaces --> A* > > A{5,} --> apply replaces --> A* > > \\* --> apply replaces --> x* > > > > To implement "Find all xs:pattern elements that permit an unbounded > number of characters" do this: > > > > If the string resulting from applying the replaces > > contains * or +, then the regex permits an > > unbounded number of characters. > > > > David (or anyone), is this correct? > > > > /Roger
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Need an XPath expression , Michael Kay michaelk | Thread | Re: [xsl] Need an XPath expression , David Carlisle d.p.c |
Re: [xsl] Need an XPath expression , Dimitre Novatchev dn | Date | Re: [xsl] Need an XPath expression , Dimitre Novatchev dn |
Month |