perl中数字和字母混合的字符串的匹配 如题,我有一个文件,里面存了一

些十六进制数,比如03FF,FD38,3,FFFE等等应该怎么样才能把他们匹配出来呢?求大神指点指点~~~~... 些十六进制数,比如03FF,FD38,3,FFFE
等等
应该怎么样才能把他们匹配出来呢?求大神指点指点~~~~
展开
 我来答
right3a
2016-05-16 · TA获得超过441个赞
知道小有建树答主
回答量:323
采纳率:0%
帮助的人:143万
展开全部
很显然,你的思路就是错的,你要是的相同,你又用了匹配的方法,匹配的话只要包含了就可以匹配上,如ABC12,ABC是能匹配的。所以思路应该是强制转换成小写,判断字符串相等(eq),当然转成大写也是一样的。
open FA,"<A" || die"cannot open A:$!";
while(<FA>){
chomp;
my @a=split;
open FB,"<B" || die"cannot open B:$!";
while(<FB>){
chomp;
my @b=split;
print"$a[0]\t$a[1]\t$b[0]\t$b[1]\n" if (lc($a[1] eq lc($b[1]);
}
}
close FA;
close FB;

如果第二列的值是惟一的(就是说每一行都不同),建议使用哈希,特别是当你的文件特别大的时候。我也是做这个的,深有体会。
open FA,"<A" || die"cannot open A:$!";
open FB,"<B" || die"cannot open B:$!";
my %A;
while(<FA>){
chomp;
my @a=split;
my $key=lc($a[1]);
$A{$key}=$_;
}
while(<FB>){
chomp;
my @b=split;
my $key=lc($b[1]);
print"$_\t$A{$key}\n" if $A{$key};
}
close FA;
close FB;
希望对你有用
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式