我正在尝试执行以下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的新手。
答案 0 :(得分:3)
我认为
s/(?<=\$53:).*?(?=.[^\$\?\s])//
应该没有点:
s/(?<=\$53:).*?(?=[^\$\?\s])//
那个人在h之前保留了空间作为前瞻。
答案 1 :(得分:2)
务实的做法是摆脱空间。
$var =~ s/(?<=:)\s//g;