in reply to Backreference regex help

Hello rocketperl,

Your regex is pretty close to being correct. Just two tweaks needed:

  1. You need to count the capture ([A-Z]) in the total. So, to get 5 or more, you need m/([A-Z])\g2{4,}/.

  2. To see the repeated letters, you need another capture:

    #! perl use strict; use warnings; use constant MIN_MATCHES => 5; my %sequ = ( 1 => 'abcXXXXXef', 2 => 'abcYYYYYYef', 3 => 'abZZZZef', ); my $match_at_least = MIN_MATCHES - 1; for my $k (1 .. 3) { if (my @matches = $sequ{$k} =~ m/(([A-Z])\g2{$match_at_least,})/) { print "Match: $matches[1] in $matches[0] \n"; } }

    Output:

    16:47 >perl 1069_SoPW.pl Match: X in XXXXX Match: Y in YYYYYY 16:47 >

    Note that capture groups are numbered according to the position of the left parenthesis, so the whole sequence of repeated characters is \g1 and the first character is \g2. I have also removed the /g modifier to keep things simple.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: Backreference regex help
by rocketperl (Sexton) on Nov 01, 2014 at 07:42 UTC
    I can't thank you enough!!! Just what I wanted. You have saved me a lot of time. Thanks