免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3503 | 回复: 5
打印 上一主题 下一主题

perl 如何取出一行中匹配到第2次的字段? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-13 16:08 |只看该作者 |倒序浏览
假如我有一行文本: “the first file is abc.jpg the second file is cba.jpg the third file is bac.jpg and"

我现在如何用模式来取出第2个jpg文件的文件名 cba.jpg 呢?

那位兄弟知道的帮帮忙。

[ 本帖最后由 yang-wei 于 2008-3-13 16:09 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-03-13 16:48 |只看该作者
  1. my $str='the first file is abc.jpg the second file is cba.jpg the third file is bac.jpg and';
  2. if($str=~/\.jpg.*?(\w+\.jpg)/){
  3.     print 'filename is ',$1;
  4. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2008-03-13 18:32 |只看该作者
原帖由 __lxmxn__ 于 2008-3-13 16:48 发表
my $str='the first file is abc.jpg the second file is cba.jpg the third file is bac.jpg and';
if($str=~/\.jpg.*?(\w+\.jpg)/){
    print 'filename is ',$1;
}



谢谢阿。这个方便。

我当时是用笨的方法,直接把那行打散,放入数组,再把有jpg的放入另外一个数组,然后取出array[1] 的值。

论坛徽章:
0
4 [报告]
发表于 2008-03-14 10:35 |只看该作者

回复 #3 yang-wei 的帖子

还要再请教下:
1,如何取出倒数第2个jpg的文件名?

2,以及取出所有的jpg文件名?

3,或者任意指定的一个? 比如第4个,或者第8个?

论坛徽章:
0
5 [报告]
发表于 2008-03-14 11:34 |只看该作者
  1. #!perl -w
  2. print "输入jpg文件名的序号,倒序的使用负数表示:\n";
  3. my $select=<STDIN>;
  4. chomp $select;
  5. my $str='the first file is abc.jpg the second file is cba.jpg the third file is bac.jpg and def.jpg the end';
  6. my @jpgarray=($str=~/[^\W]*\.jpg/g);
  7. if($select<0){
  8.     print "FileName is $jpgarray[$select]\n";
  9. }else{
  10.     print "Filename is $jpgarray[--$select]\n";
  11. }
复制代码

论坛徽章:
0
6 [报告]
发表于 2008-03-14 13:00 |只看该作者

回复 #1 yang-wei 的帖子

zhuangbility的写法

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. my $index = shift || 0;
  5. my $data = "the first file is abc.jpg the second file is cba.jpg the third file is bac.jpg and ";
  6. print +($data =~ /(\w+\.jpg)/g)[$index],"\n";
复制代码

<lig@other-server:~/chinaunix>$ ./match
abc.jpg
<lig@other-server:~/chinaunix>$ ./match 1
cba.jpg
<lig@other-server:~/chinaunix>$ ./match 2
bac.jpg
<lig@other-server:~/chinaunix>$ ./match -1
bac.jpg
<lig@other-server:~/chinaunix>$ ./match -2
cba.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP