使用正则表达式将标量的一部分分配给另一个变量

时间:2014-11-05 22:51:35

标签: regex perl

我有一列标量(分配给变量$ contig)所有看起来都像这样:

c46360_g1_i1_resultsMinus3HEditlen=341

我想取第一部分(c46360_g1_i1)并将其分配给一个新变量并打印出来。基本上切断该列中所有标量的“_resultsMinus3HEditlen = 341”。 c,g和i之后的数字都不同。

这是我到目前为止的代码:

while ( my $line = <RESULTS> ) {
    chomp $line;
    my @column = split( /[\s|]/, $line );
    my $goID = $column[4];
    my $contig = $column[0];
    $goHash{$contig} = $goID;
    print $contig, "\t", $goID, "\n";
}

2 个答案:

答案 0 :(得分:0)

这是一个做您期望的示例代码:

perl -E '
    my $var = "c46360_g1_i1_resultsMinus3HEditlen=341";
    (my $newvar = $var) =~ s/_resultsMinus3HEditlen=\d+//;
    say $newvar
'

答案 1 :(得分:0)

my ($contig_prefix) = $contig =~ /^(c[0-9]+_g[0-9]+_i[0-9]+)/;