-2

需要你的帮助。我有包含内容的txt文件:

http://www.odnoklassniki.ru/group/50577704157376
http://www.odnoklassniki.ru/group/50735464710341
http://www.odnoklassniki.ru/group/51604546650191
http://www.odnoklassniki.ru/group/51760907550833/album/51760907747441
http://www.odnoklassniki.ru/group/51104812826795
http://www.odnoklassniki.ru/group/51512464113845
http://www.odnoklassniki.ru/group/52331994480761
http://www.odnoklassniki.ru/group/56283345518632
http://www.odnoklassniki.ru/group/50763665834200
http://www.odnoklassniki.ru/group/49222266847410
http://www.odnoklassniki.ru/group/44709448384597/album/44709465620565
http://www.odnoklassniki.ru/group/42776675221604
http://www.odnoklassniki.ru/group/50906863239329

我需要在第 5 个 slesh 之后删除所有内容。解决方案需要 perl 或正则表达式到记事本++


4

4 回答 4

1
while (<>) {
    chomp;
    s{^http://www\.odnoklassniki\.ru/group/[^/]+\K.*}{}s;
    print;
}

或者,如果您想更通用:

use URI qw( );

while (<>) {
   chomp;
   my $url = URI->new($_);

   my $path = $url->path;
   $path =~ s{^/[^/]*/[^/]*\K.*}{}s;
   $url->path($path);

   print "$url\n";
}
于 2012-08-28T19:39:11.653 回答
1

使用记事本++:

Find what: ([^/]+//[^/]+/[^/]+/[^/]+/).*
Replace with: \1
于 2012-08-28T19:26:32.260 回答
1

你可以使用这个 Perl 正则表达式:s{^ ( (?:[^\/]* \/){5} ) .+ }{$1}x

于 2012-08-28T19:26:41.697 回答
0
while(<FILE>){
s/([^/]*\/[^/]*\/[^/]*\/[^/]*\/[^/]*\/).*/\1/;
print $_;
}
于 2012-09-05T14:19:09.007 回答