我使用正则表达式编写了一个基本程序。 但是返回整行而不是匹配的部分。
我想只提取数字。
use strict;
use warnings;
my $line = "ABMA 1234";
$line =~ /(\s)(\d){4}/;
print $line; #prints *ABMA 1234*
我的正则表达式不正确吗?
答案 0 :(得分:3)
如果要打印1234,则需要更改正则表达式并打印第二场比赛:
use strict;
use warnings;
my $line = "ABMA 1234";
$line =~ /(\s)(\d{4})/;
print $2;
答案 1 :(得分:2)
答案 2 :(得分:2)
您可以使用相应的值替换确切的值。而且您不会删除文字\w
;
use strict;
use warnings;
my $line = "ABMA 1234";
$line=~s/([A-z]*)\s+(\d+)/$2/;
print $line; #prints only 1234
如果要将值存储在新字符串中,则
(my $newstring = $line)=~s/([A-z]*)\s+(\d+)/$2/;
print $newstring; #prints only 1234
试试这个: