2014-03-03 45 views
0

我已經在腳本下面的表達式我看改寫:$line =~ s/.*[\\\/]//;有人可以幫我找出這個正則表達式的片斷嗎?

這是什麼對我說的是:

  • 匹配任何字符,次任意金額,那場比賽"\""/"
  • "/"

這並沒有真正意義的我,雖然更換了 - 我們爲什麼會匹配"/",如果我們強制t會再次用"/"替換它嗎?

+0

提供了一些測試用例 –

+2

Leaning Toothpick Syndrome。考慮'使用File :: Basename'basename';'來代替。 – Zaid

回答

3

這實際上是不是這樣的表現手法,將s///結構是在Perl substitution operator和的形式爲:

s/pattern/replacement/[modifiers] 

所以:

$line =~ s/.*[\\\/]// 

實際上表示匹配任何字符零次或多次後面跟着一個/\並且在那裏替換任何東西。有效地刪除它們。

1

以 「/」

錯誤更換。 s的模式是s/regex/replacement/。這裏,regex.*[\\\/](即,在最後的/\之前的所有內容),並且「替換爲空。它只是消除了匹配。

2

這意味着什麼:「匹配斜線前的一些文本,並刪除斜槓和文本。」s/X/Y /「表示用Y替換X,最後兩個斜槓分隔替換組件。當使用這種正則表達式的一個例子是在目錄路徑刪除目錄

相關問題