perl中数字和字母混合的字符串的匹配 如题,我有一个文件,里面存了一
些十六进制数,比如03FF,FD38,3,FFFE等等应该怎么样才能把他们匹配出来呢?求大神指点指点~~~~...
些十六进制数,比如03FF,FD38,3,FFFE
等等
应该怎么样才能把他们匹配出来呢?求大神指点指点~~~~ 展开
等等
应该怎么样才能把他们匹配出来呢?求大神指点指点~~~~ 展开
1个回答
展开全部
很显然,你的思路就是错的,你要是的相同,你又用了匹配的方法,匹配的话只要包含了就可以匹配上,如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;
希望对你有用
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;
希望对你有用
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询