を変更された文字列を返す、私はこのような文字列があります。のPerl - 文字列の最後の数字の後に戻り、最後の英字とあまりに
$var = '123456d';
または多分
$var = '123456'; # (no alpha char)
を最大6桁の数字がありますそれが重要なら5以上でなければなりません。 アルファ、スペース、または特殊な数字は混在しません。
私のPerlスクリプトでは、最後のアルファ文字とアルファベットのない文字列を削除して返す必要があります。
\ Dとトリムを使うことができますか?またはチョップ?しかし、両方のvarsをすばやく取得する簡単な方法が必要です。その後、
my $numbers =~ s/\D+?$var//; #???
my $alpha = substr($var, 0, -1); ## but no alpha check.
または
my $alpha = chop($var); ## but no alpha check.
ように-Zとあれば、それは英字であるかどうかを確認します。
それとも私の能力の解決策の限界:
$alpha = $var;
$alpha =~ s/[0-9]//ig;
$var =~ s/[a-Z]//ig;
$numbers = $var;
その結果:
($numbers == '123456')
($alpha eq 'd') (or '' if nothing)
私はちょうど該当する解決策を見つけるか書くことができない、これはここに頼むには余りにも簡単ですように感じるが、 。
私の=〜sの使用は単なる推測ですが、より良い方法や1つのライナーが必要です。ここにすべての助けを
おかげで...考えた後
SORRY!数字の後にアルファベット2文字が表示されることがあります。
$var =~ s{^([0-9]+).*}{$1}i;
'[A-z] 'の範囲は重大なエラーです。アルファ文字の場合は、 '\ p {alpha}'と書いてください。 – tchrist
ありがとうございます。$ var =〜s/\ p {alpha} // ig; ?? –