文件名的Java正则表达式

时间:2014-12-05 11:52:17

标签: java regex

我想根据两种模式检查发送给我的文件名。

第一个正则表达式是〜*〜,它应匹配〜263~等名称。我把它放在在线正则表达式测试器中,它匹配。代码不起作用。说不匹配

List<FTPFile> ret = new ArrayList<FTPFile>();
    Pattern pattern = Pattern.compile("~*~");
    Matcher matcher;
    for (FTPFile file : files) 
    {
        matcher = pattern.matcher(file.getName());
        if(matcher.matches())
        {
            ret.add(file);
        }
    }
    return ret;

我需要的第二个模式是 @ @ *,它应匹配像abc @ ere @ sss

这样的字符串

请告诉我java中的正确模式。

2 个答案:

答案 0 :(得分:0)

您需要定义您的模式,

Pattern pattern = Pattern.compile("~.*~");
你的正则表达式~*中的

~*~将重复第一次~零次或多次。所以它不会匹配第一个~之后的数字。因为matches方法尝试匹配整个输入字符串,所以此正则表达式会导致匹配失败。因此,您需要在中间添加.*以匹配~66~~kjk~等字符串。要匹配仅在~之间存在数字的字符串,您需要使用~\d+~

答案 1 :(得分:0)

试用正则表达式:

\~.*\~

<强>相反:

~*~

示例:

 Pattern pattern = Pattern.compile("\\~.*\\~");