in reply to Limiting number of regex matches

#!/usr/bin/perl -- use strict; use warnings; use Data::Dump; my $str ='dog dog dog dog dog'; my @dogs ; while( @dogs < 3 and $str =~ /(dog)/g ){ push @dogs, $1; } dd \@dogs; __END__ ["dog", "dog", "dog"]

Replies are listed 'Best First'.
Re^2: Limiting number of regex matches
by 2teez (Vicar) on Sep 25, 2012 at 21:06 UTC

    Or Maybe this:

    use warnings; use strict; my $str = 'dog dog dog dog dog'; print join " " => ( split /\s+/, $str )[ 0 .. 2 ];
    Output
    dog dog dog

    If you tell me, I'll forget.
    If you show me, I'll remember.
    if you involve me, I'll understand.
    --- Author unknown to me
      That doesn't limit the number of matches, it still counts/matches every single dog in the string

        Yes, why use a regex to match for an obvious substring in this case, when a string could be splited into an array, a slice of that which got the required output printed?
        Please, don't forget that the OP also asked among other things "..Is there no other way.."? Am simply showing, some other ways, in this case.

        If you tell me, I'll forget.
        If you show me, I'll remember.
        if you involve me, I'll understand.
        --- Author unknown to me