#!/bin/perl -w use strict; while( my $string=) { # this works while( $string=~ s{(a\d+)(b\d+)(.*)}{$1$3($2)}){} # this does not #$string=~ s{(?<=a\d+)(b\d+)(.*)}{$3($2)}g; print "string: $string\n"; } __DATA__ a1b1b2b3 a1b1a12b1b2a3b1b2b3db1b2