1. 正则表达式从文件名称中提取文件名称(不包含后缀)
fileName = "test.xyz.jpg"
name = fileName.scan(/(.*)\./)[0][0]
运行结果:test.xyz
2. 正则表达式从文件名称中提取文件后缀
suffix = fileName.scan(/\.[^\.]+$/)[0]
运行结果:.jpg
3. 正则表达式从文件的路径和文件名称中提取文件名称(不包含后缀)
说明:
1)注意各语言正则表达式特殊字符转义情况;
2)两种匹配规则兼容windows和linux系统。
Ruby版本:
n = "c://dir1/dir2/文件.txt.cyb.pdf"
n =~ /([^<>\/\\|:""\*\?]+)\.\w+$/
puts $1 or puts Regexp.last_match[1]
运行结果:文件.txt.cyb
Java版本:
String uri = "c:\\dir1\\dir2\\文件.txt.cyb.pdf";
String reg = "([^<>/\\\\|:\"\"\\*\\?]+)\\.\\w+$+";
Matcher m = Pattern.compile(reg).matcher(uri);
String filename = null;
if (m.find()) {
filename = m.group(1);
}
System.out.println(filename);
4. 正则表达式从文件的路径和文件名称中提取文件名称(含后缀)
其他语言版本,请参考3对正则特殊字符进行转义。
Ruby版本:
n = "c://dir1/dir2/文件.txt.cyb.pdf"
n =~ /([^<>\/\\\|:""\*\?]+\.\w+$)/
puts $1 or puts Regexp.last_match[1]
运行结果:文件.txt.cyb.pdf