in reply to Re^4: Using Regexp::Common
in thread Using Regexp::Common

The following program will match every base-10 number in your string. The number may be in any format known to perl.
use strict; use warnings; use Regexp::Common; $_ = '10,101,110.11010110 '; local $, = "\n"; print /($RE{num}{real})/g;
OUTPUT:
10 101 110.11010110
Note that the group and sep options are not specified. They only apply to separations within a single number. The absence of a keep option tells the module not to capture anything. We use our own parenthesis to capture exactly what we want. We use the /g match option to find (and capture) all the matches.
Bill

Replies are listed 'Best First'.
Re^6: Using Regexp::Common
by AnomalousMonk (Archbishop) on Sep 20, 2015 at 21:05 UTC
    We use our own parenthesis ...

    With use of the  /g regex modifier, capturing parentheses are not needed (although they do no harm): in list context, all matched sub-strings are returned.

    c:\@Work\Perl>perl -wMstrict -MRegexp::Common -le "$_ = '10,101,110.11010110'; ;; print qq{'$_'} for /$RE{num}{real}/g; " '10' '101' '110.11010110'

    The absence of a keep option tells the module not to capture anything.

    But I thought that the idea behind the use of  -keep was that justrajdeep wanted to "... divide [the extracted numbers] into floats/integer etc.", i.e., classify them, and for this the capture of number components (sign, whole number, fractional part, etc.) by  -keep could be made to work nicely.

    ... group and sep options are not specified. They only apply to separations within a single number.

    justrajdeep seems to want to handle comma-separated, grouped whole numbers (and binary ones at that), but I agree that his or her requirements are a bit confusing, at least to me.


    Give a man a fish:  <%-{-{-{-<

      My intention was to help justrajdeep clarify his requirements by providing a base line solution to critique.

      Your use of 'for' neatly solves the problem I had with keep.

      I was not aware that my parenthesis were not needed. I probably still would have specified them.

      Bill