#!/usr/bin/perl use strict; use warnings; my $string = qq~['X', ['S', ['Y', ['X0']], ['NP', ['YP', ['ZP']], 'VP'], 'DA']]~; our $pat; $pat = qr! \[ (?> (?>[^\[\]]+) | (??{$pat}) )* \](?:\,\s)* !x; if( $string =~ /\[\'S\'\,\s($pat)*\[\'NP\'/ ) { print "matcht $1!\n"; print "alles: $&\n"; }else{ print "nix gefunden :-(\n"; }