Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Match integer or floating point numbers, then parse triplets

by metaperl (Curate)
on Sep 14, 2011 at 19:08 UTC ( #925981=perlquestion: print w/ replies, xml ) Need Help??
metaperl has asked for the wisdom of the Perl Monks concerning the following question:

I'm surprised there arent plenty of nodes of info on matching any type of number. But anyway, my problem has 2 steps

GOAL 1

# have $1 contain everything but the leading "0:" # and the trailing ",$intOrFloat" ... in this case ",4.00" # http://search.cpan.org/~nwclark/perl-5.8.3/pod/perlretut.pod $intOrFloat = qr/^[+-]?\ *(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/; $_ = "0:20,1.00,g,1.00;65,4.00,g,4.00"; /0:(.)+,$intOrFloat/ and warn $1;
# (for some reason $intOrFloat is not matching)

GOAL 2

# $1 contains a series of triplets separated by semicolons # Each triplet consists of price,quantity,unit_of_measure # The goal is to create an array of hashrefs with this data: # { price => ..., quantity => ..., unit_of_measure => ... }

Comment on Match integer or floating point numbers, then parse triplets
Select or Download Code
Re: Match integer or floating point numbers, then parse triplets
by Corion (Pope) on Sep 14, 2011 at 19:11 UTC

    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?

      $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.

Re: Match integer or floating point numbers, then parse triplets
by metaperl (Curate) on Sep 14, 2011 at 20:04 UTC

      "The cake is a lie."

      True laziness is hard work

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://925981]
Approved by Old_Gray_Bear
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (7)
As of 2014-12-29 08:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (185 votes), past polls