fug*_*ugu -1 regex math perl eval
我试图读取两个由a分隔的数字:并进行比较.
下面是一些说明我的问题的代码:
use strict;
use warnings;
my @nums = qw(1.23:2.13 0.1:2.11 1.17772e+06:1.32 2:10.2);
for my $number (@nums){
print "actual numbers $number\n";
my ($c, $e) = ($1, $2) if $number =~ /(\d+\.\d+|\d+):(\d+\.\d+|\d+)/;
print "regex matches: $c:$e\n";
}
Run Code Online (Sandbox Code Playgroud)
哪个输出:
actual numbers 1.23:2.13
regex matches: 1.23:2.13
actual numbers 0.1:2.11
regex matches: 0.1:2.11
actual numbers 1.17772e+06:1.32
regex matches: 06:1.32 # not capturing 1.17772e+06
actual numbers 2:10.2
regex matches: 2:10.2
Run Code Online (Sandbox Code Playgroud)
我的问题是:我怎样才能a)捕获1.17772e+06并b)将其评估为数字?
从perldata:
/^(?:[+-]?)(?=\d|\.\d)\d*(?:\.\d*)?(?:[Ee](?:[+-]?\d+))?$/
Run Code Online (Sandbox Code Playgroud)
要么,
use Regexp::Common;
/$RE{num}{real}/
Run Code Online (Sandbox Code Playgroud)
(这些假设您需要Perl对数字的定义.)