如何使用正则表达式删除字符串中的$字符?

时间:2013-06-06 01:30:26

标签: regex perl

我想使用正则表达式删除带有$,%,#这三个字符的字符串,但似乎无法删除$并且错误信息显示未定义的变量

我该如何解决这个问题?

这是我的代码

perl Remove.pl $ABC#60%


#!/usr/bin/perl

$Input = $ARGV[0];

$Input =~ s/\$|%|#//g;

print $Input;

感谢

3 个答案:

答案 0 :(得分:6)

我认为你的问题是shell,而不是Perl代码。单引用脚本的参数:

perl remove.pl '$ABC#60%'

shell可以将'$ ABC'解释为变量名,在这种情况下,脚本不会收到任何参数。然后Perl会在替换时抱怨未定义的变量。

答案 1 :(得分:1)

$Input =~ s/[\$%#]//g;

应该工作

答案 2 :(得分:1)

如果你只想删除一些字符,最好使用tr

试试这个:

perl -e '$arg = shift; $arg =~ tr/$%#//d; print $arg' '$asdf#$'

你的代码很好,但你传递给程序的参数将在bash中扩展。你应该把单引号。

试试这个:

perl Remove.pl '$ABC#60%'