在Java中,使用正则表达式提取文件名可以通过Pattern和Matcher类来实现。以下是一个示例代码,展示了如何使用正则表达式从字符串中提取文件名:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractFilename {
public static void main(String[] args) {
String input = "C:\\Users\\Username\\Documents\\file1.txt";
String regex = "[^\\\\/]+\\.[^\\\\/]+$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
String filename = matcher.group();
System.out.println("Extracted filename: " + filename);
} else {
System.out.println("No filename found.");
}
}
}
input 是包含文件路径的字符串。[^\\\\/]+\\.[^\\\\/]+$
[^\\\\/]+:匹配除反斜杠(Windows)或斜杠(Unix/Linux/Mac)之外的一个或多个字符。\\.:匹配点号(.),因为点号在正则表达式中有特殊含义,所以需要转义。[^\\\\/]+:再次匹配除反斜杠或斜杠之外的一个或多个字符,直到字符串结束。Pattern.compile(regex):编译正则表达式。pattern.matcher(input):创建一个匹配器,用于在输入字符串中查找匹配项。matcher.find():查找下一个匹配项。matcher.group():返回匹配的子字符串。file.name.txt),这个正则表达式只会提取最后一个点号之前的部分。如果需要提取所有点号之间的部分,可以调整正则表达式。如果你需要提取文件名中所有点号之间的部分,可以使用以下代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractFilenameParts {
public static void main(String[] args) {
String input = "C:\\Users\\Username\\Documents\\file.name.txt";
String regex = "[^\\\\/]+(\\.[^\\\\/]+)*$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
String filename = matcher.group();
System.out.println("Extracted filename: " + filename);
// 提取所有点号之间的部分
Pattern partPattern = Pattern.compile("\\.");
Matcher partMatcher = partPattern.matcher(filename);
while (partMatcher.find()) {
System.out.println("Part: " + partMatcher.group());
}
} else {
System.out.println("No filename found.");
}
}
}
在这个示例中,我们首先提取整个文件名,然后使用另一个正则表达式 \\. 来查找并提取所有点号之间的部分。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。