次のような文字列があります。
$var = '123456d';
またはおそらく
$var = '123456'; # (no alpha char)
それが重要な場合、5桁以上6桁まであります。数字にアルファ、スペース、または特殊文字が混在していません。
私の 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.
次に、aZ などで、それがアルファ文字かどうかを確認します。
または私の能力ソリューションの限界:
$alpha = $var;
$alpha =~ s/[0-9]//ig;
$var =~ s/[a-Z]//ig;
$numbers = $var;
結果:
($numbers == '123456')
($alpha eq 'd') (or '' if nothing)
ここで質問するには些細なことだと思いますが、適用可能な解決策を見つけたり書いたりすることができません。
私の =~ s の使用は推測にすぎませんが、より良い方法またはワンライナーが必要です。
ここですべての助けをありがとう...
考えた後、申し訳ありません!数字の後に 2 文字の英字がある場合があります。それらは、単一の var ($alpha eq 'dd') として一緒に返される必要があります。
私もこれを見つけました0:
$var =~ s{^([0-9]+).*}{$1}i;