我有一个这样的字符串:
$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.
然后 if 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') 一起返回
我也发现了这个:
$var =~ s{^([0-9]+).*}{$1}i;