$text =~ s/()((?:(?!).)*)3((?:(?!<\/td>).)*)/$1$2a$3/; OR $text =~ s{(?<=)((?:(?!).)*)3((?:(?!).)*)(?=)}{$1a$2};