免费注册 查看新帖 |

Chinaunix

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

菜鸟问题.求高手解决. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-24 11:17 |只看该作者 |倒序浏览
有一份日志:用脚本处理完后的内容如下:
http://124.95.136.11/3/video04.i ... 08799264?1308802002
http://124.95.136.11/5/dl.cdn2.l ... &start=98715230

脚本很简单:#!/usr/bin/perl
use warnings;
use strict;
while (<>{
        chomp;
        my @url_all=split /\s+/,$_;
        my $url=@url_all[9];
        next if($url =~ m/mt\.dl$/);
        print "$url\n";
}

我想用正则 只匹配URL.就是这些:
video04.ifeng.com/video05/2011/06/22/963088a7-ad00-4a72-b78b-cd83bde709e0.mp4
dl.cdn2.letv.com/15/37/87/2151285343.0.flv
请问如何匹配.麻烦大侠们帮忙写一下.
谢谢了.

论坛徽章:
0
2 [报告]
发表于 2011-06-24 11:21 |只看该作者
是不是把第四个“/”之前的去掉就可以了?

论坛徽章:
0
3 [报告]
发表于 2011-06-24 11:26 |只看该作者
对.   就是把第4个/ 去掉.
   #!/usr/bin/perl
use warnings;
use strict;
while (<>){
        chomp;
        my @url_all=split /\s+/,$_;
        my $url=@url_all[9];
        $url =~ s/\?.+$//i;
        next if($url =~ m/mt\.dl$/);
        print "$url\n";
}
不知道怎么精确的匹配.. 求解决  这个只是把 ? 后面的 URL删掉了

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
4 [报告]
发表于 2011-06-24 11:52 |只看该作者
如果目录深点就不是第4个了,你需要更通用的模块看看 Regexp::Common::URI::http

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
5 [报告]
发表于 2011-06-24 11:55 |只看该作者
URI 也行

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
6 [报告]
发表于 2011-06-24 12:23 |只看该作者
回复 1# klathleen
  1. $ echo 'http://124.95.136.11/3/video04.ifeng.com/video05/2011/06/22/963088a7-ad00-4a72-b78b-cd83bde709e0.mp4?crypt=d06fce28aa7f2e70&ran=1308799264?1308802002' |
  2. grep -Po '(?<=\d\/(?!\d))([^\?]*)(?=\?)'
  3. video04.ifeng.com/video05/2011/06/22/963088a7-ad00-4a72-b78b-cd83bde709e0.mp4
复制代码

论坛徽章:
0
7 [报告]
发表于 2011-06-24 13:28 |只看该作者
楼上兄弟的正则 有点复杂了吧... 能用简单的匹配么? 越简单越好...
难道得用模块么? 正则行吗?
求解..

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
8 [报告]
发表于 2011-06-24 13:38 |只看该作者
直接去掉 ? 和之后的
s/http://(.*?)\?/$1/

论坛徽章:
0
9 [报告]
发表于 2011-06-24 13:57 |只看该作者
现在就想把 http://124.95.136.11/3/dl.cdn2.l ... 12/2111290481.0.flv 路径之前的  http://124.95.136.11/3/ 替换掉 ..
只想要dl.cdn2.letv.com/11/32/112/2111290481.0.flv  这个URL

能实现么...越简单越好...
谢谢了

论坛徽章:
0
10 [报告]
发表于 2011-06-24 14:08 |只看该作者
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. while (<>){
  5.         chomp;
  6.         my @url_all=split /\s+/,$_;
  7.         my $url=@url_all[9];
  8.         $url =~ s/\?.+$//i;
  9.         $url =~ s/^http:\/\/\d+\.\d+\.\d+\.\d+\/\d+\///i;
  10.         next if($url =~ m/mt\.dl$/);
  11.         print "$url\n";
  12. }
复制代码
这样可以..但显的不是很专业啊...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP