Perl Regex数字

1 regex perl digit

关于我的正则表达式,我有一个问题/疑问.代码部分如下:

use strict;

my @list = ("1", "2", "123");

&chk(@list);

sub chk {
    my @num = split (" ", "@_");
    foreach my $chk (@num) {
        chomp $chk;
        if ($chk =~ m/\d{1,2}?/) {
            print "$chk\n";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

\d{4}将打印什么.在\d{3}将只打印123.但是,如果我改变\d{1,2}?它将打印所有.根据我到目前为止所读到的所有资料,我认为这{1,2}意味着:一位数但不超过两位.所以它应该只打印,1并且2正确吗?提取仅包含一到两位数字的项目需要什么?谢谢你的帮助.

Elr*_*ynn 5

\ d {1,2}如果在提供的字符串中的任何位置找到1或2位数,则会成功.其他字符串内容不会导致匹配失败.如果只想在字符串恰好包含1或2位数时匹配,请执行以下操作:^\d{1,2}$