Perl 删除字符串中的字符

Perl 删除字符串中的字符

我在 Perl 脚本中有一个 $cbDescription 变量。当我打印出 $cbDescription 时,我得到以下内容:

tIP SOLD -5 /ESH4 @1832.00

我想从字符串中删除任何 + 或 - 或 @ 符号或逗号,因此我有以下行:

$cbDescription =~ s/[+-\@,]//g;

我希望该行将 $cbDescription 更改为:

tIP SOLD 5 /ESH4 1832.00

但是当我在该行之后打印出 $cbDescription 时,我得到:

tIP SOLD  ESH

为什么它还删除了所有数字和小数点?

答案1

-是括号之间的范围分隔符,因此您需要对其进行转义:

% echo "tIP SOLD -5 /ESH4 @1832.00" | perl -pi -e 's/[+\-\@,]//g'
tIP SOLD 5 /ESH4 1832.00

相关内容