如何在第5次斜线后删除所有?

时间:2012-08-28 19:22:27

标签: regex perl notepad++

需要你的帮助。我有内容的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号后的所有肉体。解决方案需要perl或regex到notepad ++


4 个答案:

答案 0 :(得分:1)

使用Notepad ++:

Find what: ([^/]+//[^/]+/[^/]+/[^/]+/).*
Replace with: \1

答案 1 :(得分:1)

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

答案 2 :(得分: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";
}

答案 3 :(得分:0)

while(<FILE>){
s/([^/]*\/[^/]*\/[^/]*\/[^/]*\/[^/]*\/).*/\1/;
print $_;
}