print "($1)($2)\n" while "fFFggGGGG" =~ /([a-z]+)\U(\1*)/g; print "---\n"; print "($1)($2)\n" while "fFFggGGGG" =~ /([a-z]+)\U(\1*g)/g; __END__ Prints: (f)() (gg)() --- (gg)(G)