perl中如何提取包含相同的字符串

例如:@abc=(abc,def,ghi,gkl,mno,abc.qqq,def.qqq,ghi.qqq,gkl.qqq,mno.qqq)我现在想把@abc中所有包含.q... 例如:
@abc = (abc,def,ghi,gkl,mno,abc.qqq,def.qqq,ghi.qqq,gkl.qqq,mno.qqq)
我现在想把@abc中所有包含.qqq的提取出来,并给到另一个变量。
即得到:
@www=(abc.qqq,def.qqq,ghi.qqq,gkl.qqq,mno.qqq)

第二种:或者能不能将所有带.qqq的字符串,去掉.qqq然后给到另一个变量。

因为我想比对所有.qqq前面相同的字母。但现在有.qqq所以对比不了.

菜鸡,求大神指教。
展开
 我来答
紫薇参星
科技发烧友

2018-12-20 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3598万
展开全部

按照你的要求编写的perl程序如下(先用正则表达式提取,再用正则表达式替换)

@abc = ("abc","def","ghi","gkl","mno","abc.qqq","def.qqq","ghi.qqq","gkl.qqq","mno.qqq");

$size=@abc
;

@www=();

for($i=0;$i<$size;$i++){

 $string=$abc[$i];

 if($string=~ m/[A-Za-z]+\.qqq/){

  push(@www,$&);

 }

}

print "@www\n"; 

$size=@www
;

for($i=0;$i<$size;$i++){

 $www[$i]=~ s/\.qqq//i;

}

print "@www\n";

追问
是的,非常感谢你提供的方案,但现在运行的还是在¥WWW里面,我如何将".qqq"的数组,和没有".qqq"的数组分成两个变量去呢。
追答

将去掉".qqq"的放到另一个数组中就行了,完整的代码如下

@abc = ("abc","def","ghi","gkl","mno","abc.qqq","def.qqq","ghi.qqq","gkl.qqq","mno.qqq");

$size=@abc
;

@www=();

for($i=0;$i<$size;$i++){

 $string=$abc[$i];

 if($string=~ m/[A-Za-z]+\.qqq/){

  push(@www,$&);

 }

}

print "@www\n"; 

$size=@www
;

@shuzu=();

for($i=0;$i<$size;$i++){

 $string=$www[$i];

 $string=~ s/\.qqq//i;

 push(@shuzu,$string);

}

print "@shuzu\n";

连续用6a43aa2
2019-11-01 · TA获得超过3748个赞
知道大有可为答主
回答量:7283
采纳率:72%
帮助的人:627万
展开全部

@abc = ("abc","def","ghi","gkl","mno","abc.qqq","def.qqq","ghi.qqq","gkl.qqq","mno.qqq","123.qqq");

@a = grep{s/(\w+)\.qqq$/$1/}@abc;

print"@a\n";

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式