my perl code sampled: my $count = 0; foreach my $condition (@conditions) { $count++; my ($open,$close) = $condition =~ /( (?: [(] | \s )* ) (.*) /msx; print "$open $count $close"; } #### while ( ( 1 condition A && 2 condition B )&& ( 3 condition C 4 condition D ) ) #### while ( (condition A) && (condition B) ) #### while ( 1 (condition A) && 2 (condition B) ) #### while ( ( 1 condition A) && ( 2 condition B) )