in reply to why this regular expression is so slow?
perl -le' $_ = "..."; s/[\.-]+//g; if (/(\S)(\S)(\S)(\S)$/) { print "$1$2$3$4" } ' [download]
or just
perl -le' $_ = "..."; s/[\.-]+//g; print substr $_, -4; ' [download]