如何使用Perl获取数字的最后两位数字?

时间:2010-10-01 11:18:29

标签: regex perl numbers substr

如何从特定数字中获取值?

假设数字为20040819。我希望使用Perl获得最后两位数,即19

9 个答案:

答案 0 :(得分:11)

my $x = 20040819;
print $x % 100, "\n";
print substr($x, -2);

答案 1 :(得分:4)

Benoit的回答是关于标记和我将使用的标记,但是为了使用您在标题中建议的模式搜索来执行此操作,您可以这样做:

my $x = 20040819;
if ($x =~ /\d*(\d{2})/)
{
    $lastTwo = $1;
}

答案 2 :(得分:3)

substr("20040819", -2); 

或者您可以使用 Regexp::Common::time - 日期和时间正则表达式,如

use strict;
use Regexp::Common qw(time);


my $str = '20040819' ;

if ($str =~ $RE{time}{YMD}{-keep})
{
  my $day = $4; # output 19

  #$1 the entire match

  #$2 the year

  #$3 the month

  #$4 the day
}

答案 3 :(得分:3)

我将超越并展示如何将YYYYMMDD格式日期提取为年,月和日期:

my $str = '20040819';
my ($year, $month, $date) = $str =~ /^(\d{4})(\d{2})(\d{2})$/;

您可以查看defined $year等,以确定匹配是否有效。

答案 4 :(得分:2)

my $num = 20040819;
my $i = 0;
if ($num =~ m/([0-9]{2})$/) {
    $i = $1;
}
print $i;

答案 5 :(得分:1)

另一种选择:

my $x = 20040819;
$x =~ /(\d{2})\b/;
my $last_two_digits = $1;

\b匹配字边界。

答案 6 :(得分:0)

又一个解决方案:

my $number = '20040819';
my @digits = split //, $number;
print join('', splice @digits, -2, 2);

答案 7 :(得分:0)

为您解决方案:

my $number = 20040819;
my ($pick) = $number =~ m/(\d{2})$/;
print "$pick\n";

答案 8 :(得分:-1)

$x=20040819-int(20040819/100)*100;