正则表达式处理文件的问题

大家好,我有这样的文件需要用正则表达式处理,可是不太会希望大家能够帮帮我
我的文件是不确定的(尤其是文件类型)
可能是enter.swf
可能是enter.swf#0101
可能是zf\zf\enter.swf
可能是zf\zf\enter.swf@0101(或?123什么的不是正规文件类型的)
我想把文件类型后面多余的字符去掉怎么办?
谢谢大家了
[b]问题补充:[/b]
不好意思,我是初学者,刚才看见回答的也没有带明白,不过我知道第一个回答的是对的,但是自己不知道怎么写,谁在帮帮我,给我个简单的小例子什么的

参考下

[code="java"]
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.io.FilenameUtils;

public class RegTest
{

/**
 * TODO 方法说明
 *
 * @param args
 */

public static void main(String[] args)
{
    //String str = "enter.swf#0101";
    String str = "zf\\zf\\enter.swf@0101";
    String ret = processStr(str);

    System.out.println(ret);
}

public static String processStr(String str)
{
    String begin = FilenameUtils.getBaseName(str);
    //得到文件扩展名部分
    String ret = FilenameUtils.getExtension(str);

    //\w 单词字符:[a-zA-Z_0-9] 
    //\W 非单词字符:[^\w] 
    Pattern p = Pattern.compile("\\W");
    Matcher m = p.matcher(ret);

    int first = -1;
    if(m.find())
    {
        first = m.start();
    }

    if(first != -1)
    {
        ret = ret.substring(0, first);
    }

    return begin + "." + ret ;
}

}

[/code]

其实也就是扩展名后面跟了一些特殊字符再加普通字符
你只要先得到enter.swf@0101,再得到swf@0101,然后查找第一个特殊字符的位置,取子字符串就行了

给你一个正则str.replaceAll("\.[s|S][w|W][f|F].*", ".swf")