删除perl中的特殊字符

时间:2014-02-10 05:24:25

标签: regex perl

我有一个像

这样的号码

$mynum = "(800)-756-1235";

我想删除所有特殊字符,只想在这里使用数字 如何在perl中完成?

4 个答案:

答案 0 :(得分:5)

此正则表达式将删除所有非数字字符。

$mynum =~ s/\D+//g;

答案 1 :(得分:2)

实际上,$mynum的值是一个字符串,而不是一个数字,因此您的代码应该类似于

$mynum = '(800)-756-1235';
$mynum =~ s/\D+//g;

$mynum删除所有无字符字符后,如果您使用$mynum作为数字,Perl会自动将其转换为数字。

答案 2 :(得分:1)

我刚刚在日志中学到这一点,所以你走了。

您可以使用正则表达式仅匹配这样的数字,并将值分配到其他位置。

my $num = "(800)-765-1235";

my @newNum = $num =~ /\d+/g;

然后,您可以join('', @newNum)获取您的电话号码。

你也可以my $newNum = join('', $num =~ /\d+/g)。但这很难理解。

编辑 - 删除了不需要的括号。

答案 3 :(得分:1)

my $num = '(800)-765-1235';
$num =~ y/0-9//cd;