[英]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.