in reply to minimal greed, revisited

I think you have a misconception as to greediness. The underlying regex engine starts at the left side of a string, matches as far as it can, and then moves rightward, (character|unit|position) by $1. There is a negative lookahead regex modifier, though. See perlre for details. It's still probably not what you want.

When you're dealing with data in a repeated format like this, something like a split might be more appropriate:

my @fields = split(/\w+: /, $source); my $field2 = join @fields[3 .. 5];
That's not pretty, but it's more likely to get you to your solution way before you can craft a regex that'll do what you mean.