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

  • 2053
  • 0

共 0 回复