爲什麼以下兩個正則表達式的行爲不同?爲什麼這兩個正則表達式有不同的表現?
$millisec = "1391613310.1";
$millisec =~ s/.*(\.\d+)?$/$1/;
與
$millisec =~ s/\d*(\.\d+)?$/$1/;
此代碼打印什麼:
perl -e 'my $mtime = "1391613310.1"; my $millisec = $mtime; $millisec =~ s/.*(\.\d+)?$/$1/; print "$millisec";'
雖然這種打印字符串的小數部分:
perl -e 'my $mtime = "1391613310.1"; my $millisec = $mtime; $millisec =~ s/\d*(\.\d+)?$/$1/; print "$millisec";'
順便說一下,這些不是毫秒; 0.1秒是100毫秒。 – tripleee
你能寫得更乾淨嗎?趕上.1和1.1,但我不知道你想要的小數或整數。看起來像小數。所有'/(\d+.d+)$/$1/;'我喜歡使用內存,並在'[0-9]'上使用'\ d'來代替'/'。雖然意圖有點困惑,除了問他們爲什麼匹配不同。 – alexmac
嗨亞歷克斯 - 是的,我想要小數。你的意思是「我如何寫這篇文章」或「正則表達式」?你可以建議更簡單的正則表達式(如果它的話)? 。 Triplee - 你是對的。我沒有提到我稍後使用sprintf來追加零。 –