http://www.perlmonks.org?node_id=1045666


in reply to Re: qr/STRING/ fails with certain lookbehind expressions
in thread qr/STRING/ fails with certain lookbehind expressions

thanks a lot for your quick explanations and advices. I wasn't aware that regexp would change my expression internally into something else (and I am actually not sure if I want that). But I kind of see the problem now (as beeing a German).

The German sharp s 'ß' doesn't exist as a capital letter in German writing. Since no German word starts with a sharp s, there is no need for a capital accordance. If used never the less in capital writing, it is written as 'SS'. So at least from a 'German point of view' it makes sense that the 'ss' extension is only implemented for the case-insensitive modifier.

Still it is not quite clear to me what happens to the 'st' example:

my $pattern = "(?<!st)abc"; # 'st' in lookbehind qr/$pattern/i; # error: 'Variable length lookbehind not imple +mented in regex...

Whereas this one works (just like any other letter after 's' besides the combination 'ss' and 'st'):

my $pattern = "(?<!sz)abc"; # 'sz' in lookbehind qr/$pattern/i; # this works fine

Is there a way to display exactly the expression, that the regexp engine is using? (So, according to Corion this would be: /(?<!ß|st)abc/i in the first example). That would be very helpful.