删除除numeric和period之外的所有字符

时间:2016-02-04 17:17:10

标签: regex perl

我有一个字符串v1.2NDM。我试图使用正则表达式获取1.2

my $string = "v1.2NDM";
$string =~ s/[^0-9.]//;
print $string;

输出:1.2NDM但我试图获得1.2

2 个答案:

答案 0 :(得分:6)

您可以使用音译运算符删除字符:

$string =~ y/0-9.//cd;

/c表示补码 - 匹配搜索列表中未指定的任何字符。 /d表示删除替换列表中未指定替换的字符(在本例中为所有匹配的字符)。

答案 1 :(得分:2)

g或全局标志一样使用它:

$string =~ s/[^0-9.]+//g;

现在将输出1.2。出于效率原因,最好在字符类之后使用+