Positive lookahead in multiline strings (was gsub)

I was just rolling my own little thread about gsub ;]
and trying to fix my stupid regexen when
I came up with the perfect solution to replace the last occurence of a
pattern (if it is simple, thus not of any interest to the OP of the OT).

Consider this

string.reverse.sub("<","").reverse is fast
but

string.sub(Regexp.new("<(?=[^<]*$)", Regexp::MULTILINE), “”)

is almost three times as fast (to my surprise), only that it does not
work
if there are newlines in the string, they match $.
Is there a way to anchor on the end of the string in multiline strings.

Just didn’t find it.

Ty in advance

Robert


Deux choses sont infinies : l’univers et la bêtise humaine ; en ce qui
concerne l’univers, je n’en ai pas acquis la certitude absolue.

  • Albert Einstein

Robert D. schrieb:

I came up with the perfect solution to replace the last occurence of a
pattern (if it is simple, thus not of any interest to the OP of the OT).
(…)
Is there a way to anchor on the end of the string in multiline strings.

Robert, that’s \z. See for example

http://phrogz.net/ProgrammingRuby/language.html#regularexpressionpatterns

Regards,
Pit

On 7/27/06, Pit C. [email protected] wrote:

Regards,
Pit

Thanks I should have found it, but of course now reverse.sub.reverse
is
much faster again !!!
Nevertheless it behaves correctly and reasonably fast.
Thanks again.

Robert


Deux choses sont infinies : l’univers et la bêtise humaine ; en ce qui
concerne l’univers, je n’en ai pas acquis la certitude absolue.

  • Albert Einstein