2012-08-28 69 views
-3

需要你的帮助。我有txt文件的内容:如何删除第5个斜杠后的所有内容?

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或正则表达式来记事本++


+0

如果第五个斜杠之前的数据总是长度相同,就像在你的例子中一样,你最好做一个简单的子字符串。 – Narthring

回答

1

用记事本++:

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

不工作(((((()( – user1614240

+0

@ user1614240:搜索模式是否设置为“正则表达式”?我在这里试过了,它工作得很好,并且确保您选择了整个文本 –

+1

@ user1614240 ,你用记事本而不是Notepad ++? – ikegami

1

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

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"; 
} 
+0

编辑plz从txt上传字符串 – user1614240

+0

这是什么意思?可能已经完成。 – ikegami

+0

我有这个字符串的txt文件,我需要得到一个新的txt替换字符串,它需要 – user1614240

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