in reply to Re^2: Count of Repeated Characters
in thread Count of Repeated Characters

Show your code.

Or research Looking ahead and looking behind, from perlretut, or pos.


Dave

Replies are listed 'Best First'.
Re^4: Count of Repeated Characters
by santu4frnds (Initiate) on Apr 27, 2015 at 04:20 UTC
    while("dftaatzaaadfaa" =~ /aa/g) {$count++}

      Just because it's Perl, you're not obligated to find a regular expression approach to every problem. If the regex solution is elusive, solve it in a way that is easy for any programmer to understand:

      # In a world without regular expressions, # it's just a simple matter of programming: my $count = 0; my $pos = 0; while( $pos != length $string ) { $count++ if 'aa' eq substr $string, $pos++, 2 }

      Then as you become more proficient with Perl idioms, and the Perl language's built-in functions, you might discover pos:

      # Using 'pos()': while( $string =~ /aa/g ) { pos($string) = pos($string) - 1; $count++ }

      Eventually with a little work and study (perlre, perlrequick, perlretut), you may arrive at a point where this idiom is within reach:

      $count++ while $string =~ /a(?=a)/g; # Using a lookahead assertion.

      But what's important with Perl is first learning how to get the job done, and then later layering in how to do it in a more Perlish way. Eventually you'll discover =()=, which can lead to this:

      my $c = () = $string =~ m/(?=aa)/g; say $c;

      ...and at that point you might back off and decide that's too idiomatic, which is also perfectly ok; nobody will mind. ;)


      Dave

        Thanks Dave for the explanation.