[xquery-talk] string manipulation

Michael Kay mhk at mhk.me.uk
Sun Feb 5 23:06:22 PST 2006


> > 
> >>replace("book/title/author", "/.*?$", "")
> > 
> >   Does this garantee to return "book/title" and not "book" ?  The
> > longuest match would win, doesn't it ?  Personally, I'd use 
> the regexp
> > '/[^/]*$'.  BTW, why the '?' after the '*' ?
> 
> "*?" is a reluctant version of the "*" quantifier, meaning it matches 
> the shortest sequence, rather than the longest. My regular expression 
> works because of this - but yours will work as well.

No, I don't think that "/.*?$" does work. The distinction between .* and .*?
is that given several matches starting _at the same position_, .* will
choose the longest while .*? chooses the shortest. But it won't cause
backtracking to try and find a different match for the "/". 

Michael Kay
http://www.saxonica.com/




More information about the talk mailing list