我有一個data.frame包含文本列的文件名。我想返回沒有路徑或文件擴展名的文件名。通常,我的文件名已被編號,但不一定是。例如:正則表達式返回文件名,刪除路徑和文件擴展名
df<-data.frame(data=c("a","b"),fileNames=c("C:/a/bb/ccc/NAME1.ext","C:/a/bb/ccc/d D2/name2.ext"))
我想回的
df<-data.frame(data=c("a","b"),fileNames=c("NAME","name"))
等價,但我想不出華而不實的正則表達式與GSUB做到這一點。例如,我可以擺脫與擴展的(提供的文件名稱以數字結尾):
gsub('([0-9]).ext','',df[,"fileNames"])
雖然我一直在嘗試不同的模式(通過閱讀本網站上的正則表達式的幫助文件和類似的解決方案),我不能得到一個正則表達式來返回最後一個「/」和第一個「。」之間的文本。任何想法或轉發類似的問題,非常感謝!
我得到的最好的是:
gsub('*[[:graph:]_]/|*[[:graph:]_].ext','',df[,"fileNames"])
但這1)不擺脫所有領先的路徑中的字符和2)是依賴於特定的文件擴展名。
有趣的方法。對我來說,這種方法比正則表達式更清晰,這對我來說目前有點困惑。我會試一試。 – Docuemada 2013-02-25 18:52:11
這很好,謝謝。這對我來說更有意義,但那可能是因爲我需要更多的正則表達式練習! – Docuemada 2013-02-25 19:10:53
@Docuemada,沒問題。如圖所示,'file_path_sans_ext'是一個基本的正則表達式,因爲我懷疑'basename'是(但沒有檢查來驗證)。 – A5C1D2H2I1M1N2O1R2T1 2013-02-25 19:13:08