在perl输出中获得意外的空间

时间:2013-12-17 10:03:49

标签: regex perl

我正在尝试执行以下perl脚本。

$var = "\$53:\$\?\$\?\$\?  \$\=BAbc \$\? \$53: \$ hjk"
$var =~ s/(\$\=B)/FLAGB/;
$var =~ s/(?<=\$53:).*?(?=.[^\$\?\s])//
$var =~ s/(FLAGB)/\$\=B/;
print "\n$var";

我得到的输出是

$53: $=BAbc $? $53: $ hjkb

我想要做的是删除所有$和/或?和/或$53之后的空格:直到遇到第一个字符($或?或空格除外)并保留$=B(我在替换操作之前将其替换为FLAGB

现在我无法找到$53之后输出中出现额外空格的原因:

$53: $=BAbc $? $53: $ hjkb
如果问题是愚蠢的话,请原谅我的无知,我是perl的新手。

2 个答案:

答案 0 :(得分:3)

我认为

s/(?<=\$53:).*?(?=.[^\$\?\s])//

应该没有点:

s/(?<=\$53:).*?(?=[^\$\?\s])//

那个人在h之前保留了空间作为前瞻。

答案 1 :(得分:2)

务实的做法是摆脱空间。

$var =~ s/(?<=:)\s//g;