我有一个字符串v1.2NDM
。我试图使用正则表达式获取1.2
。
my $string = "v1.2NDM";
$string =~ s/[^0-9.]//;
print $string;
输出:1.2NDM
但我试图获得1.2
。
答案 0 :(得分:6)
您可以使用音译运算符删除字符:
$string =~ y/0-9.//cd;
/c
表示补码 - 匹配搜索列表中未指定的任何字符。
/d
表示删除替换列表中未指定替换的字符(在本例中为所有匹配的字符)。
答案 1 :(得分:2)
像g
或全局标志一样使用它:
$string =~ s/[^0-9.]+//g;
现在将输出1.2
。出于效率原因,最好在字符类之后使用+
。