Hello Akatsuki, and welcome to the Monastery!
It looks like your data may be in CSV (comma-separated values) format. If so, you will be better off (in the long run) to parse it with a dedicated module rather than a regular expression. For example, the following code uses Text::CSV_XS to read the values, then it doubles those which are decimal numbers but leaves the others unchanged:
use strict; use warnings; use Text::CSV_XS; my $csv = Text::CSV_XS->new({ allow_whitespace => 1 }); my $string = '"", "2.90", "3.00", "3.10", "3.20", "3.30", "3.40", "3.5 +0", ' . '"3.60", "3.70", "3.80", "3.90", "4.00", "4.10", "4.20", "5v" +'; if ($csv->parse($string)) { my @fields = $csv->fields; /(\d+\.\d+)/ && ($_ *= 2) for @fields; print "$_\t" for @fields; } else { $csv->error_diag(); }
Output:
0:12 >perl 1707_SoPW.pl 5.8 6 6.2 6.4 6.6 6.8 7 7.2 + 7.4 7.6 7.8 8 8.2 8.4 5v 0:12 >
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: Regex for multiple numbers between double quotes
by Athanasius
in thread Regex for multiple numbers between double quotes
by Akatsuki
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |