从文件

时间:2017-06-09 20:35:16

标签: string perl

我有一个文本文件,其中包含一行,我试图从中获取一定数量。

在行的开头,中间和结尾都有一些数字。我需要的是中间。

有没有办法获得中间数?也许忽略了一切,直到它之后?

一行示例:

my $astring = "cool more 23423 random words of 1234 random other [wordssssssss] 23";

因此,在上面的示例中,我想采用1234之后的of

3 个答案:

答案 0 :(得分:1)

你可以做的一件事是提取所有数字,然后使用第二个:

my $astring = "cool more 23423 random words of 1234 random other [wordssssssss] 23";

my @numbers = $astring =~ /[0-9]+/g;
print "The second number is $numbers[1]\n";

答案 1 :(得分:0)

my ($second_num) = $astring =~ /^\D*\d+\D+(\d+)/;

my $second_num = ( $astring =~ /\d+/g )[1];

答案 2 :(得分:0)

您的问题不是非常具体,因此任何能够从字符串中获取其中一个数字的解决方案对您来说都是正确的

例如,您想从这样的值中得到什么?

$astring = 'a2b3c 45g 12 12/3'

此解决方案将整个字符串拆分为空格,并仅选择@nums个"单词"包含至少一个数字而不包含非数字字符。然后打印出第二个找到的

根据您对输入数据的预期变化,这可能会或可能不够

use strict;
use warnings 'all';

my $astring = "cool more 23423 random words of 1234 random other [wordssssssss] 23";

my @nums = grep { /\d/ and not /\D/ } split ' ', $astring;

print $nums[1], "\n";

输出

1234