in reply to Match integer or floating point numbers, then parse triplets

Maybe you want to use a CSV parser instead? Text::CSV_XS?

Also, (.)+ does not do what you seem to think it does. Maybe (.+) does more of what you want?

Replies are listed 'Best First'.
Re^2: Match integer or floating point numbers, then parse triplets
by AnomalousMonk (Archbishop) on Sep 14, 2011 at 19:42 UTC
    $intOrFloat = qr/^[+-]?\ *(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/;

    metaperl:
    Also note that the definition of  $intOrFloat given in the OP requires that the integer or float be the only thing in the string (i.e., it must start at the start  ^ and end at the  $ end), and the example string given in the OP
        $_  = "0:20,1.00,g,1.00;65,4.00,g,4.00";
    and the pattern used to match it
        /0:(.)+,$intOrFloat/
    both have other stuff at the start.

    Update: metaperl: Good luck with your homework assignment.