[英]Regex to get filename with or without extension from a path
尋找一個正則表達式來提取文件名部分,不包括此代碼中路徑的擴展名
String filename = fullpath.replaceFirst(regex, "$1")
例如,對於初學者,這是最簡單的情況以及我所做的:
fullpath.replaceFirst(".*/(.*)\\..*", "$1")
)以下是一些我需要幫助的高級案例:
編輯:這里沒有實際文件, fullpath
不會指向任何文件。 它來自 URL 請求。
以下正則表達式將匹配所需的部分:
^(?:.*\/)?([^\/]+?|)(?=(?:\.[^\/.]*)?$)
解釋:
^
匹配行首(?:
非捕獲組的開始
.*\/
匹配到最后一個/
字符)?
非捕獲結束(可選)([^\/]+?|)
不貪婪地捕獲除/
之外的任何東西或什么都不捕獲(?=
積極前瞻的開始
(?:\.[^\/.]*)?
匹配擴展名(可選)$
斷言行尾)
積極前瞻結束但是,如果您正在處理多行輸入字符串並且需要更快的正則表達式,請嘗試使用這個(打開m
標志):
^(?:[^\/\r\n]*\/)*([^\/\r\n]+?|)(?=(?:\.[^\/\r\n.]*)?$)
文件名將在第一個捕獲組中捕獲。
您可以在File
object 上使用getName()
function ,然后使用正則表達式刪除擴展名,您也可以檢查它是否也是文件:
File file = new File(fullpath);
if (file.isFile()) return file.getName().replace("\..*", "");
else return "";
使用路徑文件(String pathFile)獲取帶擴展名的名稱文件,並使用FilenameUtils.removeExtension
將其刪除
String nameDocument = pathFile.substring(pathFile.lastIndexOf("/") + 1);
String fileNameWithOutExt = FilenameUtils.removeExtension(nameDocument);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.