Perl正则匹配URL问题
时间:2010-09-14
来源:互联网
http://www.xxxxxx.com/verify?code=ebacDljUtT6Wr+f33c3QidXjp0IphoccT6GvOHEakrQ0Fh3+FdttwPhFpDM4IZVGgfoQK1POZ0jB&e_cat=VERI&uid=2835562&e_cd=default&[email protected]&send_date=2010-09-14
这是两行URL地址;
我想匹配:
$1 —> e_cat
$2 —> e_cat= 后面的直
$3 —> e_cd 或 uid
$4 —> e_cd 或 uid = 后面的值
$5 —> send_date 或 email
$6 —> send_date 或 email 后面的值
$7 —> url 或 send_date
$8 —> url 或 send_date 后面的值
规则就是把&符号后面的一组值打印出来;
如:
e_cat itvw e_cd 1 uid 2826770 send_date 2010-09-14 url www.xxxxxx.com
e_cat VERI uid 2835562 e_cd default email [email protected] send_date 2010-09-14
作者: LMUser 发布时间: 2010-09-14
楼主,你的需求和结果不一样啊
需求是8个,结果却是10个
暂且当是要10个结果吧,并且假如知道该位置的项的名称范围及顺序,则代码如下:
- #!/usr/bin/perl
- use strict;
- use warnings;
-
- my $lala = 'http://www.xxxxxx.com/j/?event_code=interview&e_cat=itvw&e_cd=1&uid=2826770&send_date=2010-09-14&url=www.xxxxxx.com/member/autologon.jsp?auth_str=db1a+mzkzuos18tagthz+wbtvztiede88tk7mrx3vicxsp6h&url=job.xxxxxx.com/job/apply';
- my $lele = 'http://www.xxxxxx.com/verify?code=ebacDljUtT6Wr+f33c3QidXjp0IphoccT6GvOHEakrQ0Fh3+FdttwPhFpDM4IZVGgfoQK1POZ0jB&e_cat=VERI&uid=2835562&e_cd=default&[email protected]&send_date=2010-09-14';
- my $regex = qr{&(e_cat)=([^=&]+)
- .*?
- &(e_cd|uid)=([^=&]+)
- .*?
- &(e_cd|uid)=([^=&]+)
- .*?
- &(send_date|email)=([^=&]+)
- .*?
- &(url|send_date)=([^=&/]+)
- }xi;
-
- my @result;
- @result= $lala =~ /$regex/g;
- print "$_\t" for @result;
- print "\n";
-
- @result = $lele =~ /$regex/g;
- print "$_\t" for @result;
- print "\n";
- e_cat itvw e_cd 1 uid 2826770 send_date 2010-09-14 url www.xxxxxx.com
- e_cat VERI uid 2835562 e_cd default email [email protected] send_date 2010-09-14
作者: 珞水的大叔 发布时间: 2010-09-14
或者:
@match = $a=~/&([^&]+)/gi;
作者: wfnh 发布时间: 2010-09-14
作者: 珞水的大叔 发布时间: 2010-09-14
珞水的大叔 发表于 2010-09-14 14:11
正则应该尽量少用|
作者: wfnh 发布时间: 2010-09-14
是因为效率么
作者: 珞水的大叔 发布时间: 2010-09-14
是的···
作者: wfnh 发布时间: 2010-09-14
- use strict;
- use warnings;
-
- my ( @arr, @new, $name, $temp );
- while ( <DATA> ) {
- @arr = split /&/,$_;
- shift @arr;
- foreach $name ( @arr ) {
- @new = split /=/,$name;
- if ( $new[1] =~ /\// ) {
- $temp = (split /\//,$new[1])[0];
- printf ("%-12s %-12s\n",$new[0],$temp);
- }
- else {
- foreach (0..$#new ) {
- printf ( "%-12s",$new[$_] );
- print "\n" if ( $_ % 2 );
- }
- }
- }
- }
-
-
- __DATA__
-
- http://www.xxxxxx.com/j/?event_code=interview&e_cat=itvw&e_cd=1&uid=2826770&send_date=2010-09-14&url=www.xxxxxx.com/member/autologon.jsp?auth_str=db1a+mzkzuos18tagthz+wbtvztiede88tk7mrx3vicxsp6h&url=job.xxxxxx.com/job/apply
-
- http://www.xxxxxx.com/verify?code=ebacDljUtT6Wr+f33c3QidXjp0IphoccT6GvOHEakrQ0Fh3+FdttwPhFpDM4IZVGgfoQK1POZ0jB&e_cat=VERI&uid=2835562&e_cd=default&[email protected]&send_date=2010-09-14
作者: shangat 发布时间: 2010-09-14
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28