在 Perl 脚本中,我需要处理以下字符串:
426852 total
该字符串将始终包含一个整数,后跟一些空格和单词 total。我需要去掉变量的字符串部分,只留下一个整数,以便稍后在脚本中进行比较。
实现这一目标的最佳方法是什么?
谢谢
由于您不需要其余部分,因此只需找到前导数字就足够了:
$str =~ /^(\d+)/;
^
- 字符串开头,\d
- 数字,+
- 一个或多个。结果将在$1
,由()
如果数字在开头,则可以保留字符串原样。Perl 可以处理在数字之后包含非数字内容的数字(不过会发出警告)。
不需要正则表达式,split
可以为您执行此操作:
my $string = '426852 total';
my $number = (split " ", $string)[0];
say $number;
只需使用这样的正则表达式:
$string =~ /^(\d+)\s+\w+/;
$num = $1;
my @numbers = map { (split " ", $_)[0] } <DATA>;
print join "\n", @numbers;
__DATA__
126852 total
426852 total