#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $text = 'Vorrede bla bla Anfang <> Teil1 <> Teil2 <> Teil3 <> Ende Nachrede.'; my $retext = 'Anfang <> [^<]+ (<>) [^<]+ (<>) [^<]+ <> Ende'; print "Original:\n", "text : [$text]\n", "retext : [$retext]\n"; my $magicnumber = 0; while ($text =~ s~(?<=\D)>>~#$magicnumber>>~) { ++$magicnumber; } $retext =~ s~>>~#\\d+>>~g; my $re = qr~$retext~; print "\nVeraendert:\n", "text : [$text]\n", "retext : [$retext]\n", "re : [$re]\n"; my @allmatch = $text =~ $re; my ($m1, $m2, $m3) = ($`, $&, $'); print "\nallmatch: ", Dumper \@allmatch; print "m1 : [$m1]\n", "m2 : [$m2]\n", "m2 : [$m3]\n";