我有一個這樣的字符串:的Perl - 返回最後一個字母字符最後一位數字後的字符串,返回修改後的字符串也
$var = '123456d';
或可能
$var = '123456'; # (no alpha char)
多達6將有數字如果有關的話不少於5。 沒有字母,空格或數字中特殊的混合。
在我的Perl腳本中,我需要刪除並返回最後一個字母字符和沒有字母字符的字符串。
我想可以使用\ D和修剪?或砍?但是,必須有一個簡單的方法來快速獲得兩個變量。
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的使用只是一個猜測,但是,必須有更好的方法,甚至是一個班輪。
感謝這裏所有的幫助...
SORRY思想後!數字後面可能有2個字母!他們將需要一起返回爲一個單一的VAR($阿爾法EQ 'DD')
我發現這太TO0:
$var =~ s{^([0-9]+).*}{$1}i;
範圍'[A-z]'是嚴重錯誤。對於字母字符,你應該寫'\ p {alpha}',就夠了。 – tchrist
謝謝so $ var =〜s/\ p {alpha} // ig; ?? –