正则表达式从标量变量中删除已知数量的字节

时间:2013-11-26 18:49:03

标签: regex perl

我有一个标量变量$var,其中包含10个字节。要删除我使用的那10个字节

$var =~ s/^(.{$numberOfbytes})//;

如果少于10个字节,这可以正常工作。但是我希望一次删除超过4500个字节。我怎么能这样做?

4 个答案:

答案 0 :(得分:9)

不要使用正则表达式;相反,使用substr

my $manyBytes = substr($var, 0, 4500, '');

最后一个参数使得从$var中删除了4500个字节。 4500字节而不是$1,现在位于$manyBytes

答案 1 :(得分:1)

$var = substr($var, 4500);

substr($var, 0, 4500, '');

后者返回删除的字符。

答案 2 :(得分:1)

要删除字符串开头的指定数量的字符,请使用substr

#!/usr/bin/env perl

use strict;
use warnings;

my $var = "The quick brown fox jumped over the lazy dog.";
my $numberOfbytes = 32;
$var = substr($var, $numberOfbytes);
print "Result: [$var]\n";

预期结果:

Result: [the lazy dog.]

答案 3 :(得分:0)

我错过了s /// s的s来使其适用于任意字节。 以下代码工作正常。

$numberOfbytes = 4500;
$var=~ s/^(.{$numberOfbytes})//s;
$removedBytes = $1;