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


in reply to Capturing groups where the ending is optional

I think you're asking for

/ ^ ( (?: (?!\Q$key\E). )* ) ( .* ) /xs

By the way, you shouldn't be using \1 and \2 in the substitution expression (as Perl told you through warnings you apparently ignored). \1 and \2 are regex atoms that instruct the regex engine to match first and second captured string respectively. It makes no sense to use them in the substitution expression. Use $1 and $2 instead.