-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 に答える