2011-05-23 72 views
4

我有一種情況,我需要刪除/字符後面的最後一個n數字字符。如何刪除perl中字符串的最後n個數字字符

對於如:

/iwmout/sourcelayer/iwm_service/iwm_ear_layer/[email protected]@/main/lsr_int_vnl46a/61 

最後/後,我需要剝離出來的行數61,從而輸出,

/iwmout/sourcelayer/iwm_service/iwm_ear_layer/[email protected]@/main/lsr_int_vnl46a/ 

我嘗試使用印章,但它刪除只有最後一個字符,即。 1,在上面的例子中。

上面的最後一部分,即61,可以是任何東西,如221或2或100任何東西。我需要去掉/後的最後一個數字字符。在Perl中可能嗎?

回答

7

用於去除最後數字的正則表達式替換:

my $str = '/iwmout/sourcelayer/iwm_service/iwm_ear_layer/[email protected]@/main/lsr_int_vnl46a/61'; 
$str =~ s/\d+$//; 

\d+相匹配的一系列的數字,和$線的端部相匹配。它們被替換爲空字符串。

+1

這似乎已經奏效。非常感謝你!!!! – Pradeesh 2011-05-23 05:45:57

+5

@Pradeesh,如果這個答案適合你,請選擇複選標記 – 2011-05-23 12:37:00

7

@ Tim的答案$str =~ s/\d+$//是正確的;但是,如果你想剝奪一個字符串的最後ñ數字字符,但不一定所有結尾的數字字符,你可以做這樣的事情:

my $s = "abc123456"; 
my $n = 3; # Just the last 3 chars. 
$s =~ s/\d{$n}$//; # $s == "abc123" 
+0

將其標記爲「正確」雖然這回答問題標題,但它不回答Pradeesh實際詢問的內容:) – Tim 2011-05-23 05:25:24

+0

非常感謝您的答覆。我的問題是,我不確定「n」的確切值是什麼。它隨着我逐行讀取文件而不斷變化。蒂姆的答案做了訣竅:)。 – Pradeesh 2011-05-23 06:27:59

+0

@Tim:是的 - 這就是爲什麼我點頭向你開始我的回答=) – maerics 2011-05-23 15:51:35

0
​​
相關問題