2012-08-28 109 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 $_; 
} 
相關問題